GESP 八级 · GESP 202503 C++ 八级 第 20 题

判断题 · 答案 B · 考点:数学

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

题目

使用 math.h 或 cmath 头文件中的函数,表达式 pow(2, 5) 的结果类型为 int、值为 32。

答案:B

考点

数学

解题思维

仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。

常见错误

审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。

详细解析(节选)

【考点】pow 返回值类型|标准库数学函数

考纲定位:本题考查 GESP C++ 八级大纲"数学库函数"模块,专卡"标准库函数返回类型"这一盲点。命题人故意把 pow 的返回值类型混成 int,就是测试你知不知道标准库函数的真实签名——这是八级区别于七级的分水岭,七级只考怎么用,八级开始考细节。

解题思维:看到 pow 先查标准。C++ 标准里 pow 的原型是 double pow(double, double),不管传 int 还是 float,返回值永远是 double。为什么?因为浮点幂运算需要保留小数精度,C++ 没设计 int 版本的 pow。所以表达式 pow(2, 5) 的类型是 double,值虽然等于 32.0,但类型不是 int。选 B。

陷阱拆解:A 选项是典型的"输入是 int 就默认输出是 int"的直觉陷阱。命题人利用考生对 C 语言 pow 的模糊印象(C 里 pow 返回 double,但很多人记混成 int)。最阴险的是"值为 32"这个表述——它用真理掩盖错误,让你觉得"反正结果是对的,类型应该没问题",这是命题人设的语义陷阱。只背"pow 用来算幂"而不查返回类型,必掉坑。

反命题思维:要是把题目改成"int x = pow(2, 5); x 的值是 32",那就要考虑隐式转换——double 转 int 会截断小数,但 32.0 转 int 还是 32,所以答案不变。但要是改成"int x = pow(2, 5); x = pow(x, 2);",第二次的 pow 就错了,因为 x 是 int 会隐式转 double,但返回的 double 再赋给 x 又截断——这种变式题其实能挖出更深的类型理解。刷到类似题,先问自己:"这函数到底返回什么?"

同考点真题

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