当整型变量m=0,n=0时,执行表达式 (m++ != 1 || n++ == 0) && (++m == 2 && n-- == 0) 后,m和n的值是?
答案解析
核心考点:短路逻辑运算符的级联效应与自增顺序。
解题思路分析:
1. 分解表达式为两部分:A=(m++!=1||n++==0) 和 B=(++m==2&&n--==0)
2. 计算A部分:
- m++后m=1,判断1!=1→false
- ||短路运算符继续计算右边:n++==0→true(此时n=1)
- A=true
3. 计算B部分:
- ++m使m=2,判断2==2→true
- &&继续判断n--==0→此时n=1→false,因此B=false
4. 最终表达式为true&&false→false
5. 但变量变化:m经过两次自增(1→2),n经过自增和自减(1→0)
选项分析:
A. 错误,n的自减未体现
B. 正确,m=2(自增两次),n=0-1(因n--的副作用)
C. 错误,未考虑第二个自增
D. 错误,m仅自增两次
易错点提醒:
- 忽略||运算符右侧仍会执行
- 混淆后自增与先自增的时序差异
- 未正确处理级联逻辑运算符的短路顺序
正确答案:B