黑马程序员技术交流社区
标题:
交换两个变量的值
[打印本页]
作者:
宋红旺
时间:
2011-9-12 19:05
标题:
交换两个变量的值
看看大家能说出几种交换两个变量的值的方法(限制:不增加第三个变量的情况下)。
作者:
匿名
时间:
2011-9-12 19:06
沙发呀!这个我总结过:
菜鸟版:
int temp = a;
a = b;
b = temp;
入门版:
a = a + b;
b = a - b;
a = a - b;
高手版:
a = a ^ b;
b = a ^ b;
a = a ^ b;
专家版:
a = b + 0 * (b = a);
作者:
程钧杰
时间:
2011-9-12 19:15
面试已经被问道这个问题
可当时实在是菜鸟
最后一个理解有点困难
[
本帖最后由 chengjj520 于 2011-09-13 09:32 编辑
]
作者:
匿名
时间:
2011-9-12 20:41
貌似不增加变量并不能实现2个 变量交换数据
作者:
匿名
时间:
2011-9-13 16:13
呵呵,见识了。
作者:
匿名
时间:
2011-9-13 17:17
这个专家版 不错啊。。还是第一次见呢。。
不过 其实见过类似的,,
if ((a=b+1)>10)..... 就是把 赋值 放在表达式 里
作者:
匿名
时间:
2011-9-13 19:50
见识了,哈哈。
作者:
匿名
时间:
2011-9-16 15:28
int n,m;
n=n+m;
m=n-m;
n=n-m;
--------------------------
int n,m;
n=n^m;
m=n^m;
m=n^m;
--------------------
看老师视频学的,但实际中用的还是第三变量。
作者:
724681149
时间:
2011-10-15 15:16
楼顶上的回答的很不错~学习了
作者:
724681149
时间:
2011-10-16 14:46
楼上的专家版,很少见,我没有见过,不做评论。
我把你说的其他版本说说吧:
其中的菜鸟版,也是日常用的最多的。可读性也是最强的。
菜鸟版:
int temp = a;
a = b;
b = temp;
其中的入门版,是存在有弊端的,当a,b都非常大时容易引发数据越界的危险。
入门版:
a = a + b;
b = a - b;
a = a - b;
其中的高手版,当项目非常在乎效率的时候可以用这种方法。这个方法就是早期的一种加密和解密的原型。它的弊端就是阅读性略差,菜鸟看不懂。
高手版:
a = a ^ b;
b = a ^ b;
a = a ^ b;
作者:
余志强
时间:
2011-10-16 17:15
本帖最后由 余志强 于 2011-10-16 17:16 编辑
长见识了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2