GESP 二级 · GESP 202509 C++ 二级 第 25 题

判断题 · 答案 B

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

题目

C++ 代码 cout << ('5' + 4); 执行后的输出为 $9$。( )

答案:B

解题思维

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

常见错误

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

详细解析(节选)

【考点】字符与 ASCII 码|类型转换|cout 输出语义

考纲定位:本题对应 GESP 二级 C++“数据类型”模块中“字符常量与 ASCII 码”考点。命题人刻意让考生混淆"char 参与运算时会被提升为整型(ASCII 码)”与"cout 输出字符而非数字”,卡住那些只会背"char 就是字符”却不懂隐式转换的考生。在二级大纲中,字符与字符串是重点,但学生往往忽略字符运算的整型本质,这正是命题人想测试的盲区。

解题思维:看到 '5' + 4,先识别 '5' 是 char 类型常量,但 char 是整型,C++ 表达式中 char 会按 ASCII 码参与运算,'5' 的 ASCII 码是 53,53+4=57,57 对应的字符是 '9',所以 cout << ('5' + 4) 实际输出的是字符 '9',而非数字 9,题目断言"输出为 9"自然错误。这里的关键是 char 的隐式提升,以及 cout 输出时按字符解释结果,而非按整型输出。

陷阱拆解:选项 A 的错误源于命题人利用"字符与数字混淆"的思维陷阱——考生容易把 '5' 当成数字 5,直接 5+4=9。更阴险的是 cout 的语义陷阱:cout << '9' 输出字符,cout << 9 输出数字,题目问"输出为 9"是指数字 9,但表达式实际输出的是字符 '9',二者在视觉上相似却本质不同。边界条件上,字符常量参与算术运算结果仍是整型,但输出流会按字符解释,若结果恰好是 '9',输出就是字符而非数字,这是命题人最易设坑的细节。

反命题思维:若把题目改成 cout << ('5' - 4);,则 '5' 的 ASCII 码 53-4=49,输出字符 '1';若改为 cout << ('5' + '4');,两个字符相加,53+52=105,输出字符 'i'。提醒刷到类似题时,先问自己"字符常量参与运算时,是算 ASCII 码还是算字符本身?cout 输出的是字符还是数字?"

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