首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

【FAQ】不用第三变量交换两个整数的三种方法解决方法

2012-04-07 
【FAQ】不用第三变量交换两个整数的三种方法经常看到有人问这个方法一:ii+jji-jii-j方法二:i^jj^i

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

热点排行