2017年11月26日 星期日

兩值互換

在C++
int x=3,y=4;
x^=y^=x^=y;
會讓兩變數的值交換;
即x=4,y=3;
在Java
int x=3,y=4;
x^=y^=x^=y;
卻僅能一位換過去而已;
即x=4;
而另一個y呢?
卻會變成y=7;(咦?
這是基於兩者計算順序上的不同導致的結果~~
C++是整個"由右往左";......<=
Java是整個"由左往右";.....=>
花點時間實際自己做一次,就會理解了~

註:
^=
是將兩數進行 XOR 運算(^);
並且將結果存到左方的變數(=);
XOR
翻譯為"兩數在二進位下,逐一比對同位置的位元;
是否 \\不一樣\\ ;
另一解釋或記法為,[相同則0,相異則1];