不用第三变量交换数值

Posted Z上善若水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不用第三变量交换数值相关的知识,希望对你有一定的参考价值。

最近碰到一个面试题是关于变量替换,a= 2,b=5,替换之后b=2,a=5;当时觉得应该是利用编译器的临时变量来搞定,其实不然,结果就是我没做出来,尤其人家的标题写的“初级”,瞬间觉的自己能力不行啊。

回来之后才想起来这个是C语言时候交过的:

1 int a = 2,b=5;
2     a = b + a;
3     b = a - b;
4     a = a - b; 

是不是很简单呢,郁闷,当时怎么没想到呢,这几天邪门的很啊。

如果只是上面的那也就不说了,主要是想总结下这种满足交互原则的方法,貌似只要满足交换律似乎就能搞定这个问题啊。

看下一种:

1 int a = 2,b=5;
2     /*a = b + a;
3     b = a - b;
4     a = a - b; */
5     a = a * b;
6     b = a / b;
7     a = a / b ;

也可以实现呢。

网上貌似也有人这样搞,利用a^b^b == a,异或运算满足交换律,二进制运算的神奇哥哥理解不了:

 1     int a = 2,b=5;
 2     /*a = b + a;
 3     b = a - b;
 4     a = a - b; */
 5     /*a = a * b;
 6     b = a / b;
 7     a = a / b ;*/
 8     a = a ^ b;
 9     b = a ^ b;
10     a = a ^ b;

唉,终究是太无知了,难怪等不到录取通知。。。。。。

 

以上是关于不用第三变量交换数值的主要内容,如果未能解决你的问题,请参考以下文章

不用中间变量交换两个数值变量的值

两个变量,不用第三个数就进行切换数值

不用第三方变量交换两个数的值

数值交换

两个数值变量交换数值的几种方式

Java小案例——交换两个数值的三种方法