GESP 一级 · GESP 202303 C++ 一级 第 9 题

选择题 · 答案 A

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

题目

表达式 (3 == 0) + 'A' + 1 + 3.0 的结果类型为( )。

答案:A

解题思维

看到表达式里有3.0,直接想到C++的隐式类型提升规则:一旦运算中出现浮点类型,整个结果就会变成double。

常见错误

很多学生会忽略bool参与算术运算时的提升,以为(3==0)还是bool,或者把'A'当成字符结果,甚至漏掉3.0这个浮点常量,导致误选int或char。其实只要记住等级表bool和char在int之下,且一旦有double参与,结果必为double即可避坑。

详细解析(节选)

【考点】隐式类型提升|表达式运算顺序|浮点常量识别

考纲定位:GESP一级第二模块“基本编程”中的数据类型转换与表达式求值。命题人专门用这个表达式卡住两类人:一是以为bool参与运算仍保持bool类型,二是忽略char到int的自动提升。这道题的核心就是考察“隐式类型提升”规则——当不同类型参与运算时,C++会按等级表自动提升到低位类型,最终结果类型由最低位决定。

解题思维:先识别各操作数类型——(3==0)是bool,'A'是char,1是int,3.0是double。按C++隐式提升规则,bool参与算术运算时会被提升为int,char同样提升为int。于是表达式逐步变为int+int+int+double,最终int+double触发double提升,结果类型为double。这类题的通法是:先看表达式里有哪些类型,再按"bool < char < int < double < long double"的等级表找最低位类型,若存在浮点类型则结果必为浮点类型。

陷阱拆解:选项B是典型错误,考生容易忽略"3.0"这个浮点常量,误以为全是整型运算;选项D更是混淆了bool的运算结果,以为(3==0)参与加法后仍保持bool,但bool只能用于逻辑判断,不能直接参与算术运算;选项C错在把'A'当作字符结果,却忘了'A'在+号前已被提升为int。最阴险的细节在于bool的隐式提升:(3==0)是bool false,false在+号前会被提升为int 0,这一步很多考生会直接跳过,导致后续类型判断全错。如果你只背结论而不理解提升规则,就会掉进"以为结果是int"的陷阱。

反命题思维:如果把3.0改成1,整个表达式就变成int类型;如果把(3==0)改成true,类型依然是int;如果把'A'改成"A",则变成字符串字面量,类型是char*。这类题的关键在于"最低位类型决定结果类型",一旦你看到浮点常量,答案几乎必为double或long double。刷到类似题时,先问自己"表达式里有没有浮点类型?"就能快速锁定答案。

考频趋势:基本数据类型在题库共考过267题,其中2023年63题、2026年119题,呈上升趋势;隐式类型提升作为运算符与表达式考点,2023年91题、2025年61题,热度极高。GESP一级是重灾区,基本数据类型一级81题,运算符一级72题,说明命题人偏爱在入门阶段就考类型转换细节。

预测:结合2026年基本数据类型和运算符考题量激增,未来GESP一级仍会高频出现“表达式含浮点常量”的题型,甚至可能加入long double或char*陷阱。暂无足够依据预测具体年份,但建议学生看到3.0、1.0等浮点字面量时,立即警觉结果为double。

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