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

判断题 · 答案 A

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

题目

char a='A';
a=a+32;
cout<<(int)a<<endl;

将输出 97

答案:A

解题思维

答案A。数组和位运算的代码追踪要特别小心:数组下标从0开始,位运算结果可能不直观。建议画图辅助。

常见错误

位运算追踪时建议把数字写成二进制形式再逐位计算。

详细解析(节选)

【考点】ASCII 字符编码|char 类型运算|类型转换

1. 🎯 考纲定位 GESP 三级《C++ 基础》模块,考察字符与整数运算及输出规则。命题人卡住的是"以为 char 只能存字符"的误区,其实 char 本质是整型,底层就是 ASCII 码值,所以能直接参与算术运算。

2. 🧠 解题思维 'A' 的 ASCII 码是 65,65+32=97,即小写"a"。cout 用 (int)a 强制转换后输出整数 97,符合 C++ 类型规则。关键要记住:char 和 int 之间可以隐式转换,但显式转换能控制输出格式。

3. 🪤 陷阱拆解 错误选项 B 常源于"cout 输出 char 就显示字符"的直觉,但这里显式转 int,输出必为数字。若去掉 (int) 转换,cout 会输出 'a',题目特意用 (int) 考的就是类型转换细节。很多考生会忽略显式转换的作用,以为 cout 会自动判断类型,但 C++ 的输出重载对不同类型有严格区分。

4. 🔄 反命题思维 改个条件,比如 a=a-32,输出会是 65,即'A'。再比如 a='a'+32,会得到 '{' 的 ASCII 码 123,输出 123。刷到类似题先问"命题人想考我什么"——是类型转换还是输出格式,还是 ASCII 码的加减关系,别被表面代码迷惑。

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