在JavaScript中,如果我写:
var a = 6;
var b = 4;
a ^= b ^= a ^= b;
console.log(a, b);
结果将为0 6。
但如果我写:
var a = 6;
var b = 4;
a ^= b;
b ^= a;
a ^= b;
console.log(a, b);
结果将是4 6。并且是正确的。
为什么这种单行的JavaScript XOR交换方式不起作用?
而在C++中为什么它能正常工作?
a ^= b ^= a ^= b
; 等同于 三个 语句a ^= b; b ^= a; a ^= b;
吗? - Some programmer dudestd::swap(a, b)
,它能够正常工作并且更短。 - Bo Persson