GESP 八级 · GESP 202403 C++ 八级 第 16 题

判断题 · 答案 B

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

题目

已知 int 类型的变量 a 和 b,则执行语句 a, b = b, a; 后,变量 a 和 b 的值会互换。

答案:B

解题思维

判断正误题需注意绝对化表述("一定""必须""只能"等)往往是错误的。

常见错误

判断题中注意"一定""总是""所有""唯一"等绝对化表述通常是错误的。但也要结合具体知识点判断。

详细解析(节选)

【考点】语法基础|逗号运算符|变量作用域

考纲定位 《GESP 大纲》八级 C++ 语言模块第 3 章语法基础。命题人故意放这句混淆视听——考的不是"交换",而是逗号运算符的左结合性与求值顺序。

解题思维 逗号运算符 a, b 只保留最右结果。a, b = b, a 等价于 a = b, a:先计算 b 赋给 a,再丢弃原 a,b 全程未参与运算。

陷阱拆解 选项 A 是"背结论党"的坑——误以为逗号能交换。C++ 里交换必须用临时变量或 swap 函数,纯逗号表达式永远做不到值互换。

反命题思维 若把逗号换成 temp = a; a = b; b = temp; 就变成长度相同的三步交换题;若改成 a = b; b = a; 则变成顺序赋值题。刷到这类题先问"考的是运算符优先级还是语义混淆"。

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