【FAQ】不用第三变量交换两个整数的三种方法
经常看到有人问这个
方法一:
i=i+j;
j=i-j;
i=i-j;
方法二:
i^=j;
j^=i;
i^=j;
方法三:
// 用加减实现,而且不会溢出
a = a+b-(b=a)
[解决办法]
前两种都是很经典的方法。
不过第三种方法有问题。
括号的优先级最高,先做(b=a),关键是做完后b原来的值就再也找不回来了。
最后a还是a,而b也是a了。