这是个巧妙的表达式: a ˆ= b ˆ= a ˆ= b 它不需要临时变量就可 以交换 a 和 b 的值。
这不具有可移植性。它试图在序列点之间两次修改变量 a, 而这是无定义的。 例如,有人报告如下代码: int a = 123, b = 7654; a ^= b ^= a ^= b; 在 SCO 优化 C 编译器 (icc) 下会把 b 置为 123, 把 a 置为 0。
这不具有可移植性。它试图在序列点之间两次修改变量 a, 而这是无定义的。 例如,有人报告如下代码: int a = 123, b = 7654; a ^= b ^= a ^= b; 在 SCO 优化 C 编译器 (icc) 下会把 b 置为 123, 把 a 置为 0。