已知 int 类型的变量 a 和 b,则执行语句 a, b = b, a; 后,变量 a 和 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; 则变成顺序赋值题。刷到这类题先问"考的是运算符优先级还是语义混淆"。