下面程序执行后,将输出 98 。
#include <iostream>
using namespace std;
int main() {
int a = 'a', b = 'b';
if (a > 0 || b++ > 0) {
}
cout << b;
}先算字符常量:'a' 是 97,'b' 是 98。if 条件里 a>0 为真,逻辑或会短路,右边 b++ 根本不会执行,b 保持 98,输出 98。
选 B 的人常误以为 b++ 一定执行,把 b 当成 99;也有人把字符常量当成普通数字,误判 a>0 为假。最阴险的是"短路"二字——命题人专门用后置自增放在被短路的位置,让粗心者掉进陷阱。
本题考查 GESP 三级大纲「表达式与运算符」模块。命题人放这道题,就是要卡住那些只背"++ 会自增"却不懂短路求值的学生——他们看到后置自增就条件反射地认为一定会执行,完全没意识到逻辑或的短路特性。
看到字符常量先转 ASCII:'a' 是 97,'b' 是 98。if 条件 a>0 为真,逻辑或左边已满足,右边 b++>0 被短路,b 保持 98,输出 98。
这一类题的通法是:遇到逻辑运算符先判断哪边能决定真假,再决定另一边是否执行。后置自增放在被短路位置就是经典陷阱。