1. 程式人生 > >不用第三變量交換數值

不用第三變量交換數值

也有 說了 AS 就是 col 變量 哥哥 變量交換 怎麽

最近碰到一個面試題是關於變量替換,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;

唉,終究是太無知了,難怪等不到錄取通知。。。。。。

不用第三變量交換數值