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

判断题 · 答案 B

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

题目

如果 a 为 int 类型的变量,则赋值语句 a = a + 3; 是错误的,因为这条语句会导致 a 无意义。

答案:B

解题思维

别被'无意义'吓住,直接看语法:a是变量,+3是合法表达式,赋值号两边都合规,这题就是考你分得清'语义溢出'和'语法错误'。

常见错误

最容易掉进命题人设的坑:把'数值可能溢出'偷换成'语句无意义'来混淆视听。很多同学死记硬背'赋值要合法',看到绝对化表述就慌,或者误以为a++b才是对的(其实那是语法错误),结果反把正确答案B给排除了。

详细解析(节选)

考纲定位:GESP一级'编程基础'模块,考察赋值运算与语句合法性。命题人设下语义陷阱:把'合法的自增操作'描述为'无意义',卡住初学者对运算符优先级的机械记忆,甚至诱导你联想到数值溢出问题。但这里考的不是溢出,而是语法本身是否成立。

解题思维:拿到题先别急着否定。看到赋值号,第一步判断左右两侧是否合法。a是int类型变量,是合法的左值;a + 3是算术表达式,运算结果也是合法的右值。赋值语句a = a + 3;在C++语法层面完全正确。无论a原值多少,执行后a都会更新为a + 3,这是一个有效的计算过程,绝不会导致'a无意义'。'无意义'通常指变量未初始化就使用,或者表达式本身无法求值(如a = a + b且b未定义),但本题b是常数3,毫无问题。

陷阱拆解:选项B'错误'极具迷惑性。命题人偷换概念:把'数值可能溢出'(这是运行时语义问题,且题目没给范围)偷换成'语句无意义'(这是编译时语法问题),利用绝对化表述迷惑。如果你只背'赋值要合法',会忽略'合法'的具体含义——语法合法不代表语义永远正确,但本题问的是语句是否'错误',即语法是否非法。a = a + 3;语法完全正确,所以题干说法错误,应选B。

反命题思维:改题:若a是const int,则a = a + 3错误;若a是float,语句仍合法。刷到类似题,先问'命题人想考语法还是考语义?',再看表述是否绝对。

考频趋势:从题库数据看,'基础语法'类题目在GESP一级占比极高(332题),且2023-2025年爆发式增长(287/413/401题),说明命题人正加大对语法细节的考查力度。'运算符与表达式'类题目也在一级高频出现(72题),但更多侧重优先级而非合法性陷阱。本题属于典型的'语法合法性'考点,符合一级对C++基础语法的严苛要求。

预测:结合近年趋势,未来GESP一级仍会高频出现此类'偷换概念'的语法陷阱题,可能变换为a = a + a;(合法)、a = 3 + a;(合法)或引入类型不匹配(如char a; a = a + 3;仍合法,但`a = a +

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