如果 a 是 int 类型的变量,而且值为 1,则表达式'a'的值为'1'。
别被变量名a骗了,单引号里是字符常量,不是变量引用,直接看ASCII码值就能秒杀。
学生最容易把'a'和变量a混为一谈,以为a是1,'a'也是1;或者看到'1'就下意识转成数字1,忘了字符'1'的ASCII码是49。命题人就是利用这种视觉相似和直觉偏差挖坑,让你误以为两边相等。
这道题考的是字符常量的概念以及ASCII码的映射关系,属于基础语法里最容易混淆的陷阱之一。命题人特别喜欢在单选题里用这种‘看起来像变量,其实是常量’的表述来测试学生是否真正读懂了语法细节,而不是靠猜。拿到题先别急着算,第一步就要识别表达式里的符号:单引号包裹的内容永远是字符常量,双引号才是字符串。所以'a'是一个字符常量,它的值是这个字符在ASCII表里的编码;'1'也是一个字符常量,值同样是它的ASCII编码。第二步就是查表或记住常用字符的码值:字母a的ASCII是97,数字1的ASCII是49。显然97不等于49,所以命题说“'a'的值为'1'”是错的,答案选B。这里有个反直觉的点:在C++里,字符常量'1'和整数1虽然都代表数字1,但它们的类型不同,'1'是char类型,值是49;而1是int类型,值是1。题目里a是int且值为1,但表达式里用的是'a',跟a完全没关系,纯粹是字符常量'97'。很多学生会因为看到a=1就以为'a'也是1,或者把'1'当成整数1,这都是没分清常量字面量和变量引用。避坑的关键就是养成习惯:单引号内只可能是字符常量,永远不要联想成变量名,也不要自动转成数字。从历年的考频看,基础语法在题库里占了很大比重,GESP二级更是高频考点,这类概念辨析题几乎每年必出,而且命题人越来越喜欢用这种‘偷换概念’的方式挖坑,比如把变量名和字符常量混在一起,或者把字符常量和整型常量的值混淆。对于未来考试,可以预测这类题还会继续出现,甚至可能更隐蔽,比如用其他字符组合或者结合运算符来增加迷惑性。因此,复习时要死磕字符常量的定义和ASCII码表,确保看到单引号就能立刻反应过来是字符,而不是变量或数字。