GESP 二级 · GESP 202406 C++ 二级 第 16 题

判断题 · 答案 B

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

题目

执行 C++ 代码 cout << '9' + '1'; 的输出为 $10$。( )

答案:B

解题思维

答案B。文件重定向后cout的输出被写入文件。程序本身无法确定输出目的地。

常见错误

文件重定向后程序行为不变,只是I/O目的地改变了。程序无法区分。

详细解析(节选)

【考点】字符字面值与 ASCII 码转换|C++ 运算符优先级

1. 考纲定位 本题考查 GESP 二级 C++ 大纲中"字符与字符串"模块的核心概念。命题人专门设计这道题,就是要卡住考生对字符字面值本质的理解——绝大多数人看到 '9' 就下意识当成数字 9 处理,完全忽略了 C++ 里字符字面值本身就是整型。

2. 解题思维 看到字符字面值参与运算,第一反应必须是查 ASCII 码(或编码表):'9' 的码值是 57,'1' 的码值是 49。加法运算直接作用于这两个整型值:57 + 49 = 106。题目声称输出是 10,显然错误。

3. 陷阱拆解 选项 A 的正确者都是在掉同一个坑:"字符字面值 '9' 就是数字 9 的字符形式"这句话是错的。'9' 存储的是编码 57,不是数字 9 的某种可视化包装。命题人最阴险的细节在于使用单引号——双引号 "9" 才是字符串字面值(类型是 const char*),而单引号 '9' 是字符字面值(int 类型)。如果你只背"字符加法等于数字加法"这种结论,不看类型和编码表,一定会选 A。

4. 反命题思维 如果把题干改成 cout << '9' + '1' - '8';,答案就是 10 了(57+49-56=50,再转字符显示为 '2')。刷到字符字面值运算的题,先别急着算,问自己三个问题:类型是什么?编码是多少?运算后是什么类型?

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