或许有很多同学会喜欢使用
a = a^b;
b= b^a;
a= a^b;
对于不知道原理的同学,我举一个类似的例子:
a=a+b;
b=a-b;
a=a-b;
然后是其中的bug :
交换值经常会在排序中碰到,但是异或运算是比较危险的。当出现自身和自身异或的时候,结果是置0的;
既 a=a^a;
a==0;
所以用之前判断一下,再加一个三元运算符,虽然难度,但是会蛮帅的。
其次,值得一提的是,a=a^a;将a置0的效率要比 赋值运算(a=0;)效率高的多。
或许有很多同学会喜欢使用
a = a^b;
b= b^a;
a= a^b;
对于不知道原理的同学,我举一个类似的例子:
a=a+b;
b=a-b;
a=a-b;
然后是其中的bug :
交换值经常会在排序中碰到,但是异或运算是比较危险的。当出现自身和自身异或的时候,结果是置0的;
既 a=a^a;
a==0;
所以用之前判断一下,再加一个三元运算符,虽然难度,但是会蛮帅的。
其次,值得一提的是,a=a^a;将a置0的效率要比 赋值运算(a=0;)效率高的多。