GESP 三级 · GESP202609 C++ 三级 第 23 题

判断题 · 答案 A

← 整套速查表 GESP 三级 全部真题

题目

下面程序执行后,将输出 98 。

#include <iostream>
using namespace std;
int main() {
int a = 'a', b = 'b';
if (a > 0 || b++ > 0) {
}
cout << b;
}
答案:A

解题思维

先算字符常量:'a' 是 97,'b' 是 98。if 条件里 a>0 为真,逻辑或会短路,右边 b++ 根本不会执行,b 保持 98,输出 98。

常见错误

选 B 的人常误以为 b++ 一定执行,把 b 当成 99;也有人把字符常量当成普通数字,误判 a>0 为假。最阴险的是"短路"二字——命题人专门用后置自增放在被短路的位置,让粗心者掉进陷阱。

详细解析(节选)

1. 考纲定位

本题考查 GESP 三级大纲「表达式与运算符」模块。命题人放这道题,就是要卡住那些只背"++ 会自增"却不懂短路求值的学生——他们看到后置自增就条件反射地认为一定会执行,完全没意识到逻辑或的短路特性。

2. 解题思维

看到字符常量先转 ASCII:'a' 是 97,'b' 是 98。if 条件 a>0 为真,逻辑或左边已满足,右边 b++>0 被短路,b 保持 98,输出 98。

这一类题的通法是:遇到逻辑运算符先判断哪边能决定真假,再决定另一边是否执行。后置自增放在被短路位置就是经典陷阱。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断