黑马程序员技术交流社区
标题:
那个不用第三变量交换值,这样对吗
[打印本页]
作者:
tougboy
时间:
2015-5-23 10:35
标题:
那个不用第三变量交换值,这样对吗
本帖最后由 tougboy 于 2015-5-23 11:01 编辑
i=i^j;//i放异或结果
j=i^j;//j放原i
i=i^j;
就是121哈 才看出来
作者:
qian0217wei
时间:
2015-5-23 12:20
楼主是用异或方式写的,没错!还有一种方式
n=n+m;
m=n-m;
n=n-m;
这种方式也是不通过第三方变量交换两元素的值,这里我就不解释了,相信应该能看懂,我觉得原理和异或差不多!
作者:
南山忆
时间:
2015-5-23 12:23
恩,是的
作者:
齐浩
时间:
2015-5-23 19:14
int i=2,j=5;
一,i=i^j;//i异或j一次
二,j=i^j;//此时的i就是i^j了,所以这个表达式等同于j=i^j^j两次,还是i,然后赋值给了j。此时j就是i了。
三,i=i^j;//此表达式中的i就是表达式一,j就是表达式二,相当于i^j^i,所以值是j,赋值给i了。
根据一个数异或另一个数两次还是自己的原理,可以仔细看注释。。。
作者:
sss18310878521
时间:
2015-5-23 23:16
在面试中这个题目会被经常问到。。
作者:
流水0215
时间:
2015-5-23 23:21
好像在实际开发中,还是用中间变量的多
作者:
xiekai
时间:
2015-5-23 23:37
对的啊 好像挺重要的
作者:
白水丶
时间:
2015-5-23 23:54
异或实现交换
作者:
二大爷
时间:
2015-5-23 23:58
对的 视频里面有讲的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2