GESP 三级 · GESP 202506 C++ 三级 第 25 题

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

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

题目

函数声明 double f(); 返回 int 时,会自动转换为 double。

答案:A

考点

函数

解题思维

答案A。函数声明(原型)告诉编译器函数的存在,可以在调用之前声明、调用之后定义。

常见错误

函数声明可以放在调用之前(通常放在文件头或头文件中),实现放在调用之后。

详细解析(节选)

【考点】类型转换|函数声明

考查C++类型系统基础,位于三级大纲“数据类型与表达式”模块。命题人卡住考生对隐式转换的盲区——多数考生知道显式转换,却忽视函数返回时自动提升的规则,这是C++基础语法中容易被忽略的细节。

看到double f()先锁定返回类型,再追踪return语句。若返回int,C++规范强制在返回前提升为double,非自定义类型间自动转换无陷阱。返回值类型由函数声明决定,而非实现细节。

错误选项B利用“声明即约定”的思维定式,诱导考生误以为函数声明必须与返回类型严格匹配;实则C++允许隐式提升。最阴险处在于“函数声明”本身不决定返回类型,只决定调用时的类型检查,而实现细节才是决定返回值类型的关键。

若改题设“指针指向double”,则需显式转换;若改“返回自定义类型”,则需显式构造。刷到此类题先问“声明和实现分别约束了什么”,再判断是否允许隐式提升。

—— |

同考点真题

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