GESP 三级 · GESP 202512 C++ 三级 第 17 题

判断题 · 答案 B

← 整套速查表 GESP 三级 全部真题

题目

整型变量 a 的值为 3,浮点数变量 b 的值为 3.5,在 C++ 编译环境下,经过 a *= b 计算后,a 的值变为 10.5。此时如果输出 a,将输出 10.5。

答案:B

解题思维

答案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,同样符合截断规则。刷到类似题先问"赋值目标类型是什么",这才是破题钥匙。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断