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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 tougboy 于 2015-5-23 11:01 编辑

i=i^j;//i放异或结果
j=i^j;//j放原i
i=i^j;

就是121哈 才看出来

8 个回复

倒序浏览
qian0217wei 来自手机 高级黑马 2015-5-23 12:20:24
沙发
楼主是用异或方式写的,没错!还有一种方式
n=n+m;
m=n-m;
n=n-m;
这种方式也是不通过第三方变量交换两元素的值,这里我就不解释了,相信应该能看懂,我觉得原理和异或差不多!
回复 使用道具 举报
恩,是的
回复 使用道具 举报
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了。
根据一个数异或另一个数两次还是自己的原理,可以仔细看注释。。。
回复 使用道具 举报
在面试中这个题目会被经常问到。。
回复 使用道具 举报
好像在实际开发中,还是用中间变量的多
回复 使用道具 举报
xiekai 初级黑马 2015-5-23 23:37:41
7#
对的啊  好像挺重要的
回复 使用道具 举报
异或实现交换
回复 使用道具 举报
对的    视频里面有讲的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马