黑马程序员技术交流社区

标题: 进阶篇:两个变量交换,不使用第三个变量 [打印本页]

作者: blazehot18    时间: 2015-11-14 00:24
标题: 进阶篇:两个变量交换,不使用第三个变量
int a=10,b=20;
b=a+b-(a=b);
printf("%d,%d",a,b);
喜欢的朋友加我好友哦!一起提高
作者: 正在输入中...    时间: 2015-11-14 01:12
其实这个问题的最佳答案不是这个,而是用位运算,用异或:
a = a ^ b;
b = a ^ b;
a = a ^ b;
这个才是最完美的答案,你的揭发虽然也可以,但是有一种情况就处理不了,如果数太大了,a+b可能会越界。。
作者: arhui    时间: 2015-11-14 21:17
没必要搞那么复杂吧
作者: 陌忆    时间: 2015-11-14 22:44
a=a+b;
b=a-b;
a=a-b;
这个是最简单明了的
作者: 没有做完的梦    时间: 2015-11-14 23:20
赞一个~!
作者: liuchuan_alex    时间: 2015-11-14 23:30
支持一下
作者: hei军    时间: 2015-11-16 00:29
int a=10,b=20;

a=a+b;

b=a-b;

a=a-b;

printf("%d,%d",a,b);


这样也可以就是太繁琐  ,没有你的这种方法好用
作者: 韦德460    时间: 2015-11-16 10:23
我是来水贴的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2