黑马程序员技术交流社区

标题: 不使用临时变量,如何交换两个变量的值? [打印本页]

作者: 杨深    时间: 2012-11-20 14:07
标题: 不使用临时变量,如何交换两个变量的值?
本帖最后由 杨深 于 2012-11-24 13:15 编辑

我就会使用临时变量交换两个变量值,如今要不使用临时变量,如何实现呢,等高手指导。
                int j = 4;
                int i = 8;
                //使用第三方变量 交换 j 、i的值
                int temp ; //定义零时变量 temp
                temp = j;
                j = i;
                i = temp;

以上是使用临时变量,如果:
如果不使用 第三方的变量,交换 j i 的值?

作者: jerry2627    时间: 2012-11-20 14:12
j = i+j;
i = j-i;
j = j-i;
这不就搞定了
作者: 王新阳    时间: 2012-11-20 14:12
int i=4;
int j=8;
j=i+j;
i=j-i;
j=j-i;
Console.WriteLine("i={0},j={1}",i,j);
Console.Readkey();
作者: 维纳斯之叶    时间: 2012-11-20 14:34
a=b-a;
b=b-a;
a=a+b;
把a和b看作是数轴上的两点就行了。。。
作者: 崔晓聪    时间: 2012-11-20 14:56
呵呵,用乘除法或者指针也行,但用乘除法要保证都不能为零!!
a=a*b
b=a/b
a=a/b
作者: 化宝峰    时间: 2012-11-20 14:56
这个有意思,还可以使用异或的方式交换两个变量,不使用中间变量的,例如:
int i = 6;
int j = 12;
交换的过程如下:
i = i ^ j;       //  6^12 = 10
j = i ^ j;       //  j = 10 ^ 12 = 6
i = i ^ j;       //  i = 10 ^ 6 = 12
完成交换。
作者: 黑马王亚男    时间: 2012-11-20 19:53
楼上的几位同学恭喜你们,这道题是某公司的面试题。
作者: 邓连超    时间: 2012-11-20 20:46
a = a + b;
b = a - b;
a = a - b;

其实都差不多,了解什么意思了,用哪个都一样哇
作者: 舒远    时间: 2012-11-20 20:55
int a = 4,b = 8;
b = a + b - (a = b);
我见过这样的写法的。




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