交换两个变量的值(不使用第三个变量)
Posted pengchangwen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交换两个变量的值(不使用第三个变量)相关的知识,希望对你有一定的参考价值。
问题:不使用第三个变量(也不能使用特殊函数),以达到交换变量值的目的?
如: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。看,是不是又偷偷的交换了值?
以上是关于交换两个变量的值(不使用第三个变量)的主要内容,如果未能解决你的问题,请参考以下文章