读书人

【FAQ】不用第三变量交换两个整数的三

发布时间: 2012-04-07 17:31:51 作者: rapoo

【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了。

读书人网 >C语言

热点推荐