1. 程式人生 > >go學習筆記-運算子

go學習筆記-運算子

運算子

運算子

內建運算子

算術運算子
關係運算符
邏輯運算子
位運算子
賦值運算子
其他運算子

算術運算子

假定 A 值為 10,B 值為 20。

運算子 描述  例項
+   相加  A + B 輸出結果 30
-   相減  A - B 輸出結果 -10
*   相乘  A * B 輸出結果 200
/   相除  B / A 輸出結果 2
%   求餘  B % A 輸出結果 0
++  自增  A++ 輸出結果 11
--  自減  A-- 輸出結果 9

關係運算符

假定 A 值為 10,B 值為 20。

運算子 描述  例項
==  檢查兩個值是否相等,如果相等返回 True 否則返回 False。   (A == B) 為 False
!=  檢查兩個值是否不相等,如果不相等返回 True 否則返回 False。 (A != B) 為 True
>   檢查左邊值是否大於右邊值,如果是返回 True 否則返回 False。 (A > B) 為 False
<   檢查左邊值是否小於右邊值,如果是返回 True 否則返回 False。 (A < B) 為 True
>=  檢查左邊值是否大於等於右邊值,如果是返回 True 否則返回 False。   (A >= B) 為 False
<=  檢查左邊值是否小於等於右邊值,如果是返回 True 否則返回 False。   (A <= B) 為 True

邏輯運算子

假定 A 值為 True,B 值為 False。

運算子 描述  例項
&&  邏輯 AND 運算子。 如果兩邊的運算元都是 True,則條件 True,否則為 False。 (A && B) 為 False
||  邏輯 OR 運算子。 如果兩邊的運算元有一個 True,則條件 True,否則為 False。 (A || B) 為 True
!   邏輯 NOT 運算子。 如果條件為 True,則邏輯 NOT 條件 False,否則為 True。   !(A && B) 為 True

位運算子

假定 A 為60,B 為13

運算子 描述  例項
&   按位與運算子"&"是雙目運算子。 其功能是參與運算的兩數各對應的二進位相與。  (A & B) 結果為 12, 二進位制為 0000 1100
|   按位或運算子"|"是雙目運算子。 其功能是參與運算的兩數各對應的二進位相或   (A | B) 結果為 61, 二進位制為 0011 1101
^   按位異或運算子"^"是雙目運算子。 其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。   (A ^ B) 結果為 49, 二進位制為 0011 0001
<<  左移運算子"<<"是雙目運算子。左移n位就是乘以2的n次方。 其功能把"<<"左邊的運算數的各二進位全部左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。   A << 2 結果為 240 ,二進位制為 1111 0000
>>  右移運算子">>"是雙目運算子。右移n位就是除以2的n次方。 其功能是把">>"左邊的運算數的各二進位全部右移若干位,">>"右邊的數指定移動的位數。 A >> 2 結果為 15 ,二進位制為 0000 1111

賦值運算子

運算子 描述  例項
=   簡單的賦值運算子,將一個表示式的值賦給一個左值 C = A + B 將 A + B 表示式結果賦值給 C
+=  相加後再賦值  C += A 等於 C = C + A
-=  相減後再賦值  C -= A 等於 C = C - A
*=  相乘後再賦值  C *= A 等於 C = C * A
/=  相除後再賦值  C /= A 等於 C = C / A
%=  求餘後再賦值  C %= A 等於 C = C % A
<<= 左移後賦值   C <<= 2 等於 C = C << 2
>>= 右移後賦值   C >>= 2 等於 C = C >> 2
&=  按位與後賦值  C &= 2 等於 C = C & 2
^=  按位異或後賦值 C ^= 2 等於 C = C ^ 2
|=  按位或後賦值  C |= 2 等於 C = C | 2

其他運算子

運算子 描述  例項
&   返回變數儲存地址    &a; 將給出變數的實際地址。
*   指標變數。   *a; 是一個指標變數

運算子優先順序

有些運算子擁有較高的優先順序,二元運算子的運算方向均是從左至右。下表列出了所有運算子以及它們的優先順序,由上至下代表優先順序由高到低:

優先順序 運算子
7   ^ !
6   * / % << >> & &^
5   + - | ^
4   == != < <= >= >
3   <-
2   &&
1   ||

當然,你可以通過使用括號來臨時提升某個表示式的整體運算優先順序。