GESP 五级 · GESP 202309 C++ 五级 第 3 题

选择题 · 答案 C

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

题目

如果变量 a 和 b 分别为 double 类型和 int 类型,则表达式 (a = 6, b = 3 * (7 + 8) / 2, b += a) 的计算结果为( )。

答案:C

解题思维

看到逗号表达式别慌,先记住它本质是‘按顺序执行一串动作,最后只留下最后一个动作的结果’。这题就是让你一步步看变量怎么变,最后取b的值。

常见错误

最容易栽在两个地方:一是把逗号当普通分隔符,以为只执行了a=6就停了,或者误以为结果取第一个子表达式的值;二是算出b=22后,看到a是double就下意识想‘会不会变成22.0+6.0=28.0’,其实b+=a里的a会被隐式转成int再参与运算,所以结果还是整数28。别被类型名吓住,按顺序算准了就行。

详细解析(节选)

考点与命题视角

GESP五级《C++编程》第3章“数据类型与表达式”第3节,核心考逗号表达式的求值规则与类型转换。命题人特意把a设为double、b设为int,就是想挖坑:很多考生看到a是double,就以为后面的运算会涉及浮点,从而选错;或者只关注第一个赋值a=6,误以为逗号表达式的结果就是6。其实逗号表达式是从左到右依次执行每个子表达式,整个表达式的值等于最后一个子表达式的值。

人话讲清概念

逗号表达式(e1, e2, ..., en)就像一串指令:先跑e1,再跑e2……最后跑en。不管前面跑了多少,它最终只“吐”出en的值。这里en就是b+=a。

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