GESP 八级 · GESP 202512 C++ 八级 第 19 题

判断题 · 答案 A · 考点:函数

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

题目

使用 math.h 或 cmath 头文件中的函数,表达式 sqrt(4) 的结果类型为 double。

答案:A

考点

函数

解题思维

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

常见错误

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

详细解析(节选)

【考点】cmath 标准库函数|函数重载|隐式类型转换

GESP 八级《C++ 语言基础》中"标准库函数与数据类型"模块,考察 cmath 命名空间下 sqrt 函数的返回类型与参数隐式转换规则。命题人卡住的是考生对 C++11 后重载机制与隐式转换的混淆——误以为 sqrt(4) 会因参数是整型而报错或返回整型。

看到 sqrt 先定位到 cmath 头文件。C++11 起 sqrt 被重载为 float/double/long double 三种版本,参数经隐式转换后均返回对应浮点型。4 是整型字面量,传入 sqrt 时自动转为 double,故返回值类型为 double。

错误选项 B 源于两个常见误区:其一是将 C++98 的 sqrt 记忆为仅接受 double 参数,误以为整型参数需要显式转换;其二是将 sqrt 的返回值类型与参数类型等同,认为输入整数就输出整数。命题人特意用整型字面量 4 触发隐式转换机制,若只背结论而不理解重载与转换规则,必掉入此坑。

若改为 sqrt(4.0),参数已是浮点型,答案不变;若用 sqrtf(4.0f) 则返回 float,用 sqrtl(4.0L) 返回 long double。刷到类似题先问:参数类型是否触发隐式转换?重载版本是否匹配?

同考点真题

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