不用中间值交换a,b的值
两种方法:
1. 加减
a = a + b; b = a - b; a = a - b;
2. 异或(位)运算
a = a^b; b = a^b;//此时b = a^b^b,因此b = a(交换前的a与b)
a = a^b;//此时相当于a^b^a,由异或的交换律得a = b ^a ^a,因此a = b(交换前的a与b)
原理:异或运算的自反性与交换律。
a ^b ^b = a,a ^b ^a = b ^a ^a = b
但是位运算只能在整型数值之间进行,这是此方法的局限性。