GESP 二级 · GESP 202303 C++ 二级 第 7 题

选择题 · 答案 C

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

题目

如果 a 和 b 都是 char 类型的变量,下列哪个语句不符合 C++ 语法?

答案:C

解题思维

这题考char运算和左值右值。看到++先别急着选,问自己:操作数是变量还是字面量?字面量不可修改,++只能碰左值。

常见错误

很多考生死记'++是递增',看到C选项就以为合法,忽略了字面量是右值不能自增。还有人会纠结D选项,以为a++返回的是新值赋给b,其实返回原值,char转int再赋给char完全合法。

详细解析(节选)

【考点】char类型算术运算、左值与右值、类型提升

本题出自GESP二级,核心考查的是C++中运算符操作数的左值/右值属性以及类型提升规则。命题人故意把"字面量不能自增"这个绝对规则藏在选项C里,同时用D选项'a++'来混淆视听,诱导只背口诀不看语义的考生掉进陷阱。

逐个拆解: A选项b = a + 1;:char参与算术运算会自动提升为int,结果仍是int,再隐式转回char赋给b,合法。 B选项b = a + '1';:字符字面量'1'本质是int,两个int相加还是int,转回char合法。 C选项b = 'a'++;:'a'是字符字面量,属于右值。++运算符要求操作数必须是左值(可被修改的内存位置),因为++的本质是"先读后写"。字面量不可修改,编译器直接报错,这是本题唯一不符合语法的选项。 D选项b = a++;:a是变量(左值),++合法。注意++返回的是a的原值,a++表达式整体值是int,赋给char b会截断高位,语法完全没问题。

避坑指南:看到++、--、=等赋值或修改运算符,第一时间问"这是变量还是字面量?"。字面量(如'1'、"abc"、100)永远是右值,不能做左值操作。很多考生会误判D,以为a++返回新值,其实返回原值,但无论返回新旧,只要a是变量,语法就合法。

考频与趋势:从题库数据看,"基础语法"类题目在GESP二级中占比极高,2023年考了287题,2024年413题,2025年401题,呈持续高位态势。"变量与常量"专题在二级中也有15题,"基本数据类型"专题48题,说明命题人偏爱在二级阶段夯实语法细节。这类左值右值辨析题在二级和三级中反复出现,是区分度很高的考点。

预测:基于近年高频趋势,未来GESP二级和三级仍会高频考查"字面量不可修改"这一绝对规则,可能以"哪个语句报错"或"哪个表达式非法"的形式出现。题目形式可能更隐蔽,比如把字面量写在数组下标处(如arr['a']++)或作为函数参数自增,但核心考点不变:记住字面量是右值,任何试图修改它的操作都是非法的。

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