如果 a 为 char 类型的变量,且取值为小写字母,则执行语句 a = a - 'a' + 'A'; 后,a 的值会变为与原值对应的大写字母。
这题考 ASCII 码里小写字母和大写字母之间的固定差值。拿到题先别想具体字母,直接代入'a'和'A'把字符运算转成整型运算,你会发现它等价于减 32,而所有小写字母减 32 正好就是对应的大写字母,所以直接选 A。
最容易掉进的坑就是死记结论不看前提。很多考生看到‘大小写转换’就下意识觉得‘肯定对’,忽略了题干里那句关键的‘如果 a 为小写字母’。命题人专门用这个条件卡人:如果 a 是数字或者符号,比如 a='1',执行 a = a - 'a' + 'A' 后,结果根本不是什么大写字符,而是一个乱码。还有另一种错法是把字符运算当成字符串拼接,以为'a' - 'a' + 'A' 会变成空串加'A',其实 char 类型参与运算时自动转为 int,按数值加减,完全不会变成字符串。另外,有些同学会纠结运算符优先级,担心减法加法顺序出错,其实这里从左到右结合,先减后加,结果不变,不用多虑。
【考点】ASCII 字符编码|字符运算|条件判断
本题对应 GESP 二级大纲“字符与字符串”模块,核心考察 ASCII 编码中字母的连续性特性。命题人专门设置此题,卡住的是大量考生“以为 char 只能存字符不能参与运算”的底层认知误区——这是 C++ 入门阶段最顽固的直觉障碍。从考频数据看,基础语法类题目在题库中占比极高,2023 年单年就有 287 题,2024 年更是达到 413 题,说明这类概念辨析是高频考点,必须吃透。