GESP 一级 · GESP202609 C++ 一级 第 22 题

判断题 · 答案 A · 考点:运算符优先级

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

题目

试图编译并执行下面 C++ 代码,会输出 2 。

float z = 12.0;
z = z / 4;
z--;
cout << z++;
答案:A

考点

运算符优先级

解题思维

本题核心是区分后置自增与前置自增的语义差异。看到 cout << z++ 要先抓住"输出的是自增前的值"这一关键:后置自增表达式值为原值,副作用是变量加 1,且副作用发生在整个表达式求值之后。因此 cout << z++ 会先输出 z 当前值,再执行 z 自增。结合前面 z-- 的递减操作,整个语句序列的数值变化必须逐行推演,不能凭感觉判断。

常见错误

选 B 的考生往往混淆 z++ 与 ++z 的输出时机,误以为后置自增会输出自增后的值;也有考生忽略 cout << 的右结合性,把 cout << z++ 当成先执行 z++ 再输出,导致认为输出是 3。更隐蔽的陷阱是题目说"输出 2",而实际输出为 2.0,部分考生因浮点格式差异而否定正确性。

详细解析(节选)

本题核心是区分后置自增与前置自增的语义差异。看到 cout << z++ 要先抓住"输出的是自增前的值"这一关键:后置自增表达式值为原值,副作用是变量加 1,且副作用发生在整个表达式求值之后。因此 cout << z++ 会先输出 z 当前值,再执行 z 自增。结合前面 z-- 的递减操作,整个语句序列的数值变化必须逐行推演,不能凭感觉判断。

选 B 的考生往往混淆 z++ 与 ++z 的输出时机,误以为后置自增会输出自增后的值;也有考生忽略 cout << 的右结合性,把 cout << z++ 当成先执行 z++ 再输出,导致认为输出是 3。更隐蔽的陷阱是题目说"输出 2",而实际输出为 2.0,部分考生因浮点格式差异而否定正确性。

1. 考纲定位

本题考查《GESP 考试大纲》一级"运算符与表达式"模块中的自增自减运算符,属于必考基础点。命题人放这道题,就是要筛掉那些只背"++ 是加 1,-- 是减 1"却不懂后置运算符返回值与副作用分离这一核心概念的考生。绝大多数人在这里栽跟头,因为后置自增/自减的"先取值后修改"特性与前置完全相反,但教材往往一笔带过,导致学生形成错误直觉。

同考点真题

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