表达式 '5' - 3.0 的结果为 $2.0$,类型为 double。
判断正误题需注意绝对化表述("一定""必须""只能"等)往往是错误的。
判断题中注意"一定""总是""所有""唯一"等绝对化表述通常是错误的。但也要结合具体知识点判断。
【考点】字符常量类型|类型提升|ASCII 码
🎯 考纲定位:C++ 基础数据类型与类型提升机制。命题人专设此题,卡住所有把字符常量当整数的新手——他们只背 '5' 等于数字 5 的表象,却忘了它本质是 ASCII 码 53 的整数类型,这直接决定了运算结果的类型与值。
🧠 解题思维:第一步识别类型——字符常量 '5' 不是数字 5,而是 ASCII 码 53 的 int 类型;第二步应用类型提升——int 与 double 运算时,int 自动转为 double;第三步计算——53.0 - 3.0 = 50.0。命题人故意用 '5' 而非 5 制造陷阱,考察你对 C++ 底层类型系统的理解,而非表面语法记忆。
🪤 陷阱拆解:选项 B 的错误源于对字符常量的误解。'5' 是字符,在 C++ 中其值为 ASCII 码 53,而非数字 5。命题人利用新手极易混淆 '5' 与 5 的弱点,设下“字符即数字”的思维陷阱。若只背结论不验算 ASCII 值,就会误选 A。最阴险的细节是:题目用 '5' 而非 5,却要求判断结果,这直接逼你思考底层类型而非表面符号。
🔄 反命题思维:若将 '5' - 3.0 改为 '5' - '3',ASCII 差值 53-51=2,结果仍为 double 类型 2.0,选项 A 会变正确;若改为 5 - 3.0,整数 5 自动提升为 5.0,结果仍是 2.0,陷阱消失。这说明命题人核心意图是考“字符常量类型”,而非“减法运算”。刷到类似题先问:这题在考我哪个底层概念?