不用第三變量交換數值
阿新 • • 發佈:2018-05-26
也有 說了 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 ;*/ 8a = a ^ b; 9 b = a ^ b; 10 a = a ^ b;
唉,終究是太無知了,難怪等不到錄取通知。。。。。。
不用第三變量交換數值