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

问题:不使用第三个变量(也不能使用特殊函数),以达到交换变量值的目的?
如: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。看,是不是又偷偷的交换了值?

猜你喜欢

转载自www.cnblogs.com/pengchangwen/p/9026522.html