黑马程序员技术交流社区

标题: 交换两个变量的值,不借助第三方变量?小弟求助。谢谢... [打印本页]

作者: TNTTNT    时间: 2014-3-26 18:40
标题: 交换两个变量的值,不借助第三方变量?小弟求助。谢谢...
不引用第3个变量,将a=1,b=2的值置换?怎样实现这个方法啊,大虾帮忙啊~~~

作者: awkflf11    时间: 2014-3-26 18:46
   法一:进行两个数加减;
int x,y;
x=x+y;
y=x-y;
x=x-y;


   法二:int x=3,y=5;
         int z; z=x;x=y;y=z; 小弊端:相加可能超出int范围

  法三:用异或解;
x=x^y;
y=x^y;

x=x^y;


作者: 唐志远    时间: 2014-3-27 20:51
我试了一下 用乘除亦可以。
int x=2;
int y=3;
        x=x*y;
         y=x/y;
         x=x/y;
作者: 向阳泪无痕    时间: 2014-3-27 21:47
a =1 ; b = 2;
a = a^b;
b = a^b;  
a = a^b;
作者: 蒋珍珍    时间: 2014-4-1 09:20
   法一:进行两个数加减;
int x,y;
x=x+y;
y=x-y;
x=x-y;


   法二:int x=3,y=5;
         int z; z=x;x=y;y=z; 小弊端:相加可能超出int范围

  法三:用异或解;
x=x^y;
y=x^y;

x=x^y;

我认为异或的方法不错,一个数异或同一个数两次还是那个数。
但是我们一般就通过第三方变量来交换数据,因为加法运算可能会超出范围,而异或不常用




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