码迷,mamicode.com
首页 > 其他好文 > 详细

交换两个变量的值(不使用第三个变量)

时间:2018-05-11 23:56:18      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:复习   font   .com   分享图片   它的   style   方案   img   loading   

问题:不使用第三个变量(也不能使用特殊函数),以达到交换变量值的目的?
如:int a = 9, b = 10; 有什么办法使得他们交换呢?

办法一:拐弯抹角“相加”之方案
语句是这样的:
  a = a + b; // a = 9 + 10
  b = a - b; // b = 19 - 10
  a = a - b; // a = 19 - 10
然后你就会陡然发现,它的值居然交换了!是不是很不可思议?没错,就是这样拐弯抹角的交换了,如果没见过这种方案的还真一时半会想不出其他办法。

办法二:使用不怎么经常使用的“异或“运算符技术分享图片
来,复习一下异或运算。
首先来看一下真值表:

技术分享图片

a的二进制:技术分享图片,即1001

b的二进制:技术分享图片,即1010

那么:

  a = a ^ b;  // 即a = 1001 ^ 1010, 结果a = 0011

  b = a ^ b;  // 即b = 0011 ^ 1010, 结果b = 1001

  a = a ^ b;  // 即a = 0011 ^ 1001, 结果a = 1010

最后a的十进制最终结果为10,b的最终结果为9。看,是不是又偷偷的交换了值?

 

交换两个变量的值(不使用第三个变量)

标签:复习   font   .com   分享图片   它的   style   方案   img   loading   

原文地址:https://www.cnblogs.com/pengchangwen/p/9026522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!