2017年11月26日 星期日

C++陣列初始化

在C、C++;
如果宣告變數沒設定初始值;
程式會從電腦記憶體裡面取殘值;
有機會發生不可預期的錯誤;

因此必須初始化;
int array[10]={0};
會將陣列所有元素初始化為0;
若把0換成其他數字,謹首個元素會變,其餘皆0;

而char array[10]={'0'};
謹首個元素會變成0;(其餘皆"放空")
但bool array[10]={'true'};
謹首個元素會變成1;(其餘皆為"0(false的意思)")

兩值互換

在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];