表达式 sqrt(9.0) 的计算结果为 3,且结果类型为 int。
这题别光看数字,得去翻函数原型。命题人就是盯着你“看见 3 就以为是 int”的惯性思维下手,其实 sqrt 在 cmath 里定义得很清楚,返回值永远是 double,哪怕算出来是整数值,类型也变不了。
最容易栽跟头的就是混淆数值和类型。看到 sqrt(9.0) 等于 3,下意识觉得这就是个整型结果。还有种情况是死记硬背“sqrt 开平方”,忘了它属于浮点运算库,参数给 double 或者给 int 转 double 都能用,但回传的一定是浮点型。另外,别把关系表达式的 bool 转 int 那种隐式转换逻辑硬套过来,这里根本没涉及 bool,纯粹是函数返回值的类型问题。
命题人怎么挖坑:这题专挑考生“只记数值、忽略类型”的盲区下手。明明 sqrt(9.0) 算出来是 3.0,却硬说结果是 int,直击“数值相等≠类型相同”的认知漏洞。GESP 二级明确要求掌握 <cmath> 库中常用数学函数的用法,命题人就是盯着你“看见 3 就以为是 int”的惯性思维下手。
思考心法:拿到题先别急着算,第一步定位函数原型。C++ 中 sqrt 的定义在 <cmath> 头文件里,原型是 double sqrt(double x);。这意味着:无论传入什么类型的数据,只要调用 sqrt,它返回的永远是一个 double 类型的浮点数。代入 x=9.0 时,sqrt 返回的是 3.0(浮点表示),即使显示为 3,底层类型也是 double。
避坑指南:选项 A 错在混淆了数值与类型。3.0 和 3 在数值上相等,但 C++ 中类型是编译期确定的,sqrt 永远返回 double。命题人利用考生“看到 3 就默认是整型”的思维定式,把浮点运算伪装成整型结果。如果你只背“sqrt 算平方根”而不看函数定义,就会掉进这个陷阱。另外,注意区分这里和关系表达式(如 3==0 结果为 bool)的隐式转换逻辑,这里根本没涉及 bool 转 int 的过程,纯粹是函数返回值的类型问题。
考频趋势与预测:从数据看,“基本数据类型”在题库中占比 267 题,其中 GESP 二级考了 48 题,2023 年更是考了 63 题,2026 年预测 119 题,说明类型辨析是高频考点,且难度有上升趋势;“运算符与表达式”考了 261 题,GESP 二级 70 题,2023 年 91 题,2026 年预测 14 题,显示表达式的细节(如返回值类型)是命题人最爱挖的坑。结合历年趋势,未来二级考试仍会高频出现“数值对但类型错”的陷阱题,建议考生复习时务必把常用库函数(sqrt, pow, abs 等)的原型记熟,特别是返回类型,这是拿分的关键点。