如果 a 是 double 类型的变量,而且值为 3.5,则表达式 a * 10 的计算结果为 35,且结果类型为 int。
看到 double * int 这种混合运算,别急着算数,先盯住‘结果类型’四个字。命题人故意用 35 这个整数数值诱导你忽略类型,核心考点就是浮点运算永远返回 double。
最容易错选 A,只盯着 3.5*10=35 这个数值觉得对,就默认类型也对了。但题目后半句‘且结果类型为 int'才是判题关键。很多学生会把‘数值是整数’和‘类型是 int'混为一谈,或者误以为隐式转换会把 double 压成 int,其实 double 参与运算结果只能是 double,除非显式强转。
【考点】浮点数运算|类型提升规则|数值与类型的区别
看到 double 变量 a 和整数 10 相乘,第一反应可能是‘3.5 乘 10 等于 35,没错啊’。但题目后半句‘且结果类型为 int'才是陷阱所在。命题人利用‘数值正确就默认类型正确’的惯性思维,诱导学生忽略类型信息。
在 C++ 中,double 与 int 混合运算时,int 会被提升为 double,整个表达式按浮点规则计算,结果类型必然是 double。除非显式强转如 (int)(a*10),否则绝不可能得到 int 类型。题目说‘结果为 35 且类型为 int',前半句数值对,后半句类型错,整体判断为错误。
反推命题意图:若改问‘a*10 的值是多少’,答案仍是 35(但类型是 double);若改问‘结果类型’,答案必为 double。刷到此类题,先问自己‘命题人想考我类型还是数值’——二级题常混合两者,必须逐字核对。
【避坑】别把‘数值是整数’当成‘类型是 int',也别以为隐式转换会把 double 压成 int。记住:浮点运算结果永远是浮点类型。