C++ 表达式 int(12.56) 的值为 $13$。( )
答案B。根据C++基础知识分析判断。
注意题目中的限定词。不确定时用代入法或排除法。
【考点】类型转换|浮点截断|四舍五入误区
🎯 考纲定位:本题考查 C++ 类型转换中的隐式截断规则(GESP 二级:基本数据类型)。命题人卡住的是"四舍五入"的直觉误区——看到小数就下意识想进位,完全忽略了 int 构造函数对浮点数的处理机制是"去尾"而非"四舍五入"。
🧠 解题思维:第一步识别语法:int(12.56) 是显式类型转换,int() 接收浮点参数时执行"截断小数部分"。第二步代入数值:12.56 的小数部分 0.56 被直接丢弃,整数部分 12 保留,结果必然是 12。第三步验证结论:命题人给的 13 是四舍五入的结果,但 C++ 这里只认截断。
🪤 陷阱拆解:选 A 的人掉进"数学直觉"陷阱——在小学里 12.56≈13 是四舍五入,但在 C++ 里 int() 是强制类型转换,只保留整数部分。题目故意用 12.56 这种"刚好过半"的数来诱导你按数学逻辑判断,却完全违背语言规范。若改成 int(-12.56) 仍选 A 就暴露了"只看正数"的边界条件漏洞。
🔄 反命题思维:若改题成 int(12.6) 仍选 A 就暴露了"只看数值不看语法"的致命缺陷。真正会改题的人知道,把 12.56 换成 12.6 或 12.4,考纲考点就从"类型转换"变成"数值精度",答案逻辑完全反转。