这是个巧妙的表达式: 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。