黑马程序员技术交流社区

标题: 那个不用第三变量交换值,这样对吗 [打印本页]

作者: 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