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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jw在路途 中级黑马   /  2014-8-10 19:50  /  1415 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在上基础班的时候 对于这块内容还是理解的比较透彻,不明白的同学可以没事看看,明白的朋友可以指教推荐。
谢谢光临~
下面是个人理解的4种方式:
方式1(通过创建第三方变量来交换两数之值)
int a=10;
int b=20;设置一个第三方变量 int temp;
int temp=a; //把 a 赋值给temp;
int a=b;  // 把 b 赋值给a;
int b=temp; //把 temp中获取的a值 赋值  给 b  
这样就成功转换 a,b两值。

方式2(通过异或的原理)
方式2//
a=a^b;  //这里吧a^b的值 复制给了 a,
b=a^b;  //a^b=a^b^b=a;   解释下:( 因为根据异或2次同一个数等于它本身的原理)这里的a指(a^b),
a=a^b; //a^b=a^b^a=b;   解释:看上一步骤,这里的b已经被上面的a赋值了,所以a^b  也就可以理解为 a^a,参照第一步,a之前被 a^b赋值。 所以结果就是 a^ (a^b) ==b; 这样通过异或就完成了不用第三方转换
    根据原理(一个数异或2次同一个数等于它本身;

方式3(通过加减运算)
方式3//
给一个
int a=10;
int b=20;

a=a+b;  //a=30
b=a-b;  // b=10
a=a-b;   // a=30-10=20;
通过a,b加减运算,不需要第三方变量  可完成转换   


方式4(一步到位)
方式4//
同样给两个变量
int a=10;
int b=20;

a=(a+b)-(b=a);  //只需要一步 即可转换a,b 的值
分析:
(b=a),指把 a赋值给b,首先一步转换  
(a+b),值两数的和,
(a+b)-(b=a),指两数之和 减去 a (这里的a 是因为上面 b被a 赋值了) ,  结果就是b

转换成功~~~   :):):)

点评

方法不错~赞一个  发表于 2014-8-13 22:05

评分

参与人数 1黑马币 +5 收起 理由
a5702727 + 5 赞一个!

查看全部评分

10 个回复

倒序浏览
赞一个!
回复 使用道具 举报
呵呵 学习了 感谢分享
回复 使用道具 举报
表示赞,也来学习一下
回复 使用道具 举报
lcycr 发表于 2014-8-10 20:28
表示赞,也来学习一下

客气客气,谢谢~
回复 使用道具 举报
总结的不错!赞一个!
回复 使用道具 举报
790324255a 发表于 2014-8-10 20:23
呵呵 学习了 感谢分享

不客气,应该的~:)
回复 使用道具 举报

多谢~欢迎
回复 使用道具 举报
共同进步,总结的很精辟
回复 使用道具 举报
不错,不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马