或许有很多同学会喜欢使用
int num=0;
num=a;
a=b;
b=num;
有没有试过这样呢
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;)效率高的多。
文章转载自EffectiveCoding,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




