C++ 表达式 10 / 0.333333 == 10 / (1 / 3) 的值为 true。( )
答案B。根据C++基础知识分析判断。
注意题目中的限定词。不确定时用代入法或排除法。
【考点】整除与浮点除|类型提升|运算符优先级
🎯 考纲定位:GESP 二级 C++“表达式与运算符”模块。命题人特意把这道题放进来,就是要卡住“只背结论不辨类型”的考生——看到 1/3 就下意识当成浮点除法,却完全忽略了 C++ 里整数除法的截断规则。
🧠 解题思维:先逐段求值。10 / 0.333333 是浮点除,结果约 30.0;1 / 3 是整除得 0,再算 10 / 0 就成了浮点除除零,结果是 inf。关键观察是字面量类型:0.333333 是 double,而 1 与 3 都是 int,这决定了运算类型。通法:遇到除法表达式,先确认操作数是整型还是浮点型,决定是截断还是保留小数。
🪤 陷阱拆解:错误选项 A 的设计很阴险——利用考生对分数 1/3 的直觉联想,误以为它等于 0.333...,从而认为两边相等。最致命的细节是“整数字面量”和“浮点字面量”混用,以及括号改变了运算顺序。如果你只背结论,不理解 C++ 里整除与浮除的本质区别,就会掉进这个坑。
🔄 反命题思维:命题人若把 1 / 3 改成 1.0 / 3.0,整个表达式就变真了;或者把 0.333333 换成 1.0 / 3.0 也能让两边相等。刷到类似题时,先问自己:“哪个字面量决定了运算类型?括号是否改变了优先级?”这样就不会再被套路了。