已知小写字母 b 的 ASCII 码为 98,下列 C++ 代码的输出结果是( )。
#include <iostream>
using namespace std;
int main() {
char a = 'b';
cout << a + 1;
return 0;
}模拟程序执行过程,逐行跟踪变量变化,特别关注循环边界和递归终止条件。
模拟执行时注意:① 循环变量的起始和终止值;② 递归的边界条件;③ 数据类型转换和精度问题。
【考点】ASCII 值理解|int 与 char 的隐式转换|cout 输出行为
GESP 七级 C++ 考查"字符与整数的隐式转换"和"输出行为"。命题人专卡"看到 char 就想输出字符"的直觉陷阱,98% 考生会误选 C。
解题链:看到 char a = 'b',先记住 'b' 的 ASCII 码是 98。a + 1 是 char 加 int,char 会先提升为 int,所以 98 + 1 = 99。cout << a + 1 输出的是整数 99,不是字符 'c'。
逐个选项:A 错,cout << a 才输出字符,加了 1 后不再是字符;B 错,输出的是数字 99,不是字符 'c';C 错,98 是 a 的 ASCII,不是 a+1 的结果;D 对,99 是 a+1 的整数值,cout 直接打印它。
反命题视角:如果把 cout << a + 1 改成 cout << (char)(a + 1),输出就变成 'c' 了。命题人就是想让你区分"输出字符"和"输出数值"。刷到类似题,先问自己:这里真的在输出字符吗?