整型变量 a 的值为 3,浮点数变量 b 的值为 3.5,在 C++ 编译环境下,经过 a *= b 计算后,a 的值变为 10.5。此时如果输出 a,将输出 10.5。
答案B。C++运算符包括&(取地址/按位与)、&&(逻辑与)、*(乘/解引用),但没有**运算符(幂运算需用pow函数)。
C++没有**运算符(幂运算)!幂运算用pow()函数或手动编写循环。
【考点】隐式类型转换|赋值运算符行为|整型与浮点型混合运算
考纲定位:本题考查《GESP 大纲》三级"数据类型与转换"模块的核心规则——整型与浮点型混合运算时的隐式截断。命题人专盯"以为赋值会保留小数"的误区,卡住 90% 考生对类型转换本质的模糊认知。
解题思维:a 是整型、b 是浮点型,a *= b 等价于 a = a * b。乘法运算 a * b 产生浮点结果 10.5,再赋给整型 a 时触发隐式转换:小数部分被直接截断,a 最终存储为 10。输出整型变量只会显示整数形式,故"输出 10.5"必然错误。这一链条可迁移到所有"浮点结果赋整型"的陷阱题,关键看赋值目标类型而非运算中间结果。
陷阱拆解:错误选项 A 诱人之处在于忽略赋值目标类型——学生常误以为"a *= b"会保持浮点型,或认为 C++ 会对小数进行四舍五入。实际上,赋值运算符在整型目标上强制截断,且截断是向零取整(非四舍五入)。题目最阴险的细节是"输出 a"的表述,若 a 仍为浮点型才会输出 10.5,但 a 已被截断为整型,输出必然是 10。只背"浮点乘整型得浮点"结论而不理解类型转换规则,必掉坑。
反命题思维:若把 a 声明为 double,则 a *= b 后 a 保持 10.5,输出正确——这反向验证类型决定存储形式。若 b 改为整型 3,a *= b 得 9,输出 9,同样符合截断规则。刷到类似题先问"赋值目标类型是什么",这才是破题钥匙。