4
.
4
这是个巧妙的表达式: a ^= b ^= a ^= b 它不需要临时变量就可以交换 a 和 b 的值。
这不具有可移植性。它试图在序列点之间两次修改变量 a, 而这是无定义的。
例如,有人报告如下代码:
int a = 123, b = 7654; a ^= b ^= a ^= b;
在 SCO 优化 C 编译器 (icc) 下会把 b 置为 123, 把 a 置为 0。
参见问题
3.1
、
3.7
和
20.14
。
翻译朱群英、孙云, LaTeX2HTML 编译 朱群英 (2005-06-23)