A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jy00889669 中级黑马   /  2015-10-2 00:11  /  1112 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在一个论坛看到的,转过来分享给大家!好像是咱们黑马大牛发的

方式一

temp = a;
a = b;
b = temp;
解析:这种是最常用的,也是最容易理解的方式,不解释了。
方式二

a = b - a;
b = b - a;
a = b + a;
解析:第一个b-a后,a等于b和a的差;
第二个b-a是b减去差,正好是a,然后把它赋值给b;
第三个b+a,这时候b=a的值,a等于它们之间的差,然后a加上差等于b,就把b的值赋值给a;
方式三

a = a ^ b;
b = a ^ b;
a = a ^ b;
解析:这种也是最神奇的一种,利用异或^来交换变量;
异或^的特性:a ^ b ^ a == b;
第一步的a = a ^ b;保持不变;
第二步a ^ b == a ^ b ^ b == a ^ 0 == a;就是把a赋值给b;
第三步a ^ b == a ^ b ^ a == b;就是把b赋值给a;

12 个回复

倒序浏览
?????????????????
回复 使用道具 举报
A侠 发表于 2015-10-2 00:33
?????????????????

变量值得交换啊
回复 使用道具 举报
围观~~~~~~~~~~~~~~~~~···
回复 使用道具 举报
只看得懂第一种方法                        
回复 使用道具 举报
第二个我喜欢这么写
a=a+b;
b=a-b;
a=a-b;
回复 使用道具 举报
wwf707542865 发表于 2015-10-2 12:37
第二个我喜欢这么写
a=a+b;
b=a-b;

用第一个最简单保险,第二个有时候会数据溢出
回复 使用道具 举报
看看 感谢分享
回复 使用道具 举报
jy00889669 来自手机 中级黑马 2015-10-4 01:07:45
9#
睡觉就有梦想 发表于 2015-10-2 13:52
看看 感谢分享

客气,共同进步
回复 使用道具 举报
第一种还是最常用的。
回复 使用道具 举报
第三种学习了。。
回复 使用道具 举报
一般也就是用第一个吧
回复 使用道具 举报
不错,后两种节省栈区空间了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马