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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨深 中级黑马   /  2012-11-20 14:07  /  1860 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨深 于 2012-11-24 13:15 编辑

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

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

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

8 个回复

正序浏览
舒远 黑马帝 2012-11-20 20:55:36
9#
int a = 4,b = 8;
b = a + b - (a = b);
我见过这样的写法的。
回复 使用道具 举报
a = a + b;
b = a - b;
a = a - b;

其实都差不多,了解什么意思了,用哪个都一样哇
回复 使用道具 举报
楼上的几位同学恭喜你们,这道题是某公司的面试题。
回复 使用道具 举报
这个有意思,还可以使用异或的方式交换两个变量,不使用中间变量的,例如:
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
完成交换。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
呵呵,用乘除法或者指针也行,但用乘除法要保证都不能为零!!
a=a*b
b=a/b
a=a/b
回复 使用道具 举报
a=b-a;
b=b-a;
a=a+b;
把a和b看作是数轴上的两点就行了。。。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
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();

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
j = i+j;
i = j-i;
j = j-i;
这不就搞定了

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马