C++ 的数据类型转换让人很难琢磨透,下列代码输出的值是()。
int a=3;
int b=2;
cout<<a/b*1.0<<endl;这题考的是C++里整数除法会直接截断小数,乘法优先级和类型转换的时机。拿到题先盯运算符优先级:/和*同级左结合,所以是(a/b)*1.0,别被1.0误导以为整除变浮除。
很多学生看到1.0就以为整个表达式变成了浮点运算,结果选了A 1.5;还有人把运算顺序想反,以为先算b*1.0再乘a,或者觉得截断后还能进位选了C 2;D 1.50更是误以为cout会补两位小数。其实1.0只在乘法那一步生效,a/b已经按整数规则算出1了,再乘1.0还是1.0,cout默认只输一位小数。
【考点】整数运算|运算优先级|类型转换
GESP三级《编程语言基础》第3-2节"基本运算",命题人专门卡住"整数除法会截断小数"这个认知盲区,再借1.0这个浮点数制造"类型转换"的假象,看学生是否真的懂运算顺序。