C++ 代码 cout << ('5' + 4); 执行后的输出为 $9$。( )
答案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 输出的是字符还是数字?"