黑马程序员技术交流社区

标题: 交换变量的三种方式 [打印本页]

作者: jy00889669    时间: 2015-10-2 00:11
标题: 交换变量的三种方式
在一个论坛看到的,转过来分享给大家!好像是咱们黑马大牛发的

方式一

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;

作者: A侠    时间: 2015-10-2 00:33
?????????????????
作者: jy00889669    时间: 2015-10-2 00:42
A侠 发表于 2015-10-2 00:33
?????????????????

变量值得交换啊
作者: LPz1994    时间: 2015-10-2 11:14
围观~~~~~~~~~~~~~~~~~···
作者: meijunwei6275    时间: 2015-10-2 12:36
只看得懂第一种方法                        
作者: wwf707542865    时间: 2015-10-2 12:37
第二个我喜欢这么写
a=a+b;
b=a-b;
a=a-b;
作者: Abuzzworld    时间: 2015-10-2 13:42
wwf707542865 发表于 2015-10-2 12:37
第二个我喜欢这么写
a=a+b;
b=a-b;

用第一个最简单保险,第二个有时候会数据溢出
作者: 睡觉就有梦想    时间: 2015-10-2 13:52
看看 感谢分享
作者: jy00889669    时间: 2015-10-4 01:07
睡觉就有梦想 发表于 2015-10-2 13:52
看看 感谢分享

客气,共同进步
作者: HI奋斗    时间: 2015-10-4 07:10
第一种还是最常用的。
作者: hailiqh    时间: 2015-10-4 07:56
第三种学习了。。
作者: Eric_h    时间: 2015-10-4 09:51
一般也就是用第一个吧
作者: 洪吉童    时间: 2015-10-4 09:51
不错,后两种节省栈区空间了




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