GESP 一级 · GESP 202309 C++ 一级 第 6 题

选择题 · 答案 B

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

题目

对 int 类型的变量 a、b、c,下列语句不符合 C++ 语法的是( )。

答案:B

解题思维

这题考C++运算符类型匹配规则。拿到题先扫一眼%和复合表达式,重点盯住%两边操作数类型是否合法,这是解题最快切入点。

常见错误

学生最容易把%当成纯数学取余,以为只要数字能除就行,忽略了C++强制要求%两边必须是整型。B选项2.5是double,直接导致类型错误;C选项逗号表达式很多人会搞错求值顺序,其实逗号是从左到右,但整体类型没问题;D选项看似嵌套赋值,实则符合C++赋值表达式返回右值特性,完全合法。

详细解析(节选)

【考点】运算符类型约束|复合表达式求值|赋值表达式返回值

1. 命题人怎么挖坑:本题核心是考“取模运算符%的类型限制”。命题人故意在B选项塞进2.5,利用考生“%就是取余”的惯性思维,把浮点常量伪装成合法操作数。C选项用逗号表达式制造视觉干扰,D选项用嵌套赋值考验对“赋值表达式本身是右值”这一冷门规则的掌握。

2. 人话讲概念:在C++里,%只能作用于两个整型(int/long等),哪怕你写2.5%2,编译器也会直接报错,因为2.5是double,类型不匹配。逗号表达式a,b,c是从左到右依次求值,最后返回c的值;赋值表达式b=3的结果是3(整型),所以(b=3,c=4,b+c)整体就是整型8,完全合规。

3. 拿到题先想什么:一眼扫过四个选项,A是+=,B是%,C是逗号表达式,D是嵌套赋值。先锁定B,因为%最敏感;再看C和D,确认它们虽然复杂但类型都对;最后反推命题意图——就是考%不能碰浮点。

4. 逐项拆解:A. c+=5; 合法,+=对int有效。B. b=c%2.5; 非法,2.5是double,%要求两边整型,编译必错。C. a=(b=3,c=4,b+c); 合法,逗号从左到右,b=3得3,c=4得4,b+c得7,整体赋值给a,类型一致。D. a-=a=(b=6)/(c=2); 合法,b=6得6,c=2得2,6/2得3,a-=3即a=a-3,完全符合C++赋值表达式返回右值规则。

5. 避坑提醒:别被C选项的逗号吓到,记住逗号表达式就是顺序执行,最后取最后一个值;别以为D是“先算除法再赋值”,其实赋值表达式本身有值,可以参与运算,这是C++的精髓。学生最容易错选C或D,以为它们有顺序问题或类型问题,其实都对。

6. 考频与趋势:基础语法在题库中占比极高,共1295题,覆盖2008-2026所有级别,近年爆发式增长——2023年287题、2024年413题、2025年401题,说明命题人持续深挖语法细节。变量与常量类题77题,集中在GESP一级(40题),基本数据类型题267题,GESP一级占81题,可见一级考生对这类“类型陷阱”题接受度极高。

7. 预测:未来GESP一级仍会高频出现“运算符类型约束”类陷阱题,可能换壳考,比如用数组下标越界、指针类型不匹配等,但核心逻辑不变——先识别运算符,再核对操作数类型。暂无足够依据预测具体年份题型,但可确定“类型敏感度”是长期重点。

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