引用:
作者: bobo0836
謝謝getter,小弟以後會注意排版和註解,不過在下仍有一個疑問,程式碼如text[j]^=text[j+1]^=text[j]^=text[j+1];中^=是什麼意思?小弟找書上,好像找不到,煩請賜教!?
|
那個是 C/C++ 的運算子符號 ...
語法:
運算元
一元運算子:
運算順序:無
++:遞增 * :指標間接運算子 ! :邏輯運算-反向閘(not)
--:遞減 & :求記憶體位址 ~ :求 1 的補數
- :負數 + :正數
sizeof:佔用記憶體的大小(運算順序:--)
二元運算子:
運算順序:由左至右
+ :加 - :減 * :乘
/ :除 % :餘數 ( 模數 ) <<:左偏移
>>:右偏移 > :大於 < :小於
>=:大於等於 <=:小於等於 ==:邏輯(判斷式)等於
!=:不等於 & :位元運算-及閘(AND) | :位元運算-或閘(OR)+
^ :位元運算-互斥或閘(XOR) &&:邏輯運算-及閘(AND) ||:邏輯運算-或閘(OR)
運算順序:由右至左
= :指定為 +=:遞增等於 -=:遞減等於
*=:遞乘等於 /=:遞除等於 %=:遞除餘數等於
<<=:左偏移等於 >>=:右偏移等於 &=:位元運算-及閘等於(AND)
!=:位元運算-或閘等於(OR) ^=:位元運算-互斥或閘等於(XOR)
例: [ A=A+B = A+=B ] ; [ A=A-B = A-=b ] ; [ A=A*B = A*=B ] ; [ A=A/B = A/=B ]
三元運算子:
? ::條件運算( A>B? printf("\nA big"): printf("\nB bing");)
至於是 x^=y^=x^=y; 就能讓兩個英數字元互換的 ^= 是很久以前老是有次上課
講的 ... 剛好老師看到某位同學的程式碼用 ^= 來做英數字元互換,並做講解 ...
原本是這樣的
語法:
使用 ^= 一般變數交換
x^=y; temp=a;
y^=x; a=b;
x^=y; b=temp;
結果,某天迪西異想天開改成一行 x^=y^=x^=y; 竟然可以用 ...
不過某些類型的資料或是某些 windows SP 環境下 ^= 字元互換 會怪怪的 ...
導致資料或結果不正確 ...
至於使用變數的方式就沒辦法一行化了 ...,不過變數的話依類型宣告,結果
會很穩定的。