异或(^):不同为1,相同为0。或者理解为不进位的二进制加法。

a = a ^ b;---1
b = a ^ b;---2
a = a ^ b;---3

其结果是两者交换了,为什么呢?
由①式可得:新的a(记为new_a) = a ^ b
②式:b = new_a ^ b = a ^ b ^ b = a ^ (b ^ b)=a ^ 0 = a 即new_b = a
③式:a = new_a ^ new_b = a ^ b ^ a = b

这样就完成了交换。