運算符的優先級和結合性
阿新 • • 發佈:2018-09-22
余數 i++ 左移 表達式2 有一個 取模 left 優先 aci
註1:優先級相同的運算符,運算次序由結合性決定。
- 比如 3 * 4 / 5 % 6,其中乘號、除號和求余運算符在同一優先級,結合性是“左到右”,因此先計算 3 * 4,再計算 / 5,最後計算 % 6
- 再如 -i++,符號和自增運算符在同一優先級,結合性是“右到左”,因此 -i++ 相當於 -(i++)
註2:* 目運算符是指操作數的個數,比如單目運算符只有一個操作數,雙目運算符有兩個操作數,而三目運算符則有三個操作數。
註3:通過使用小括號可以提升表達式的優先級至最高。
- 比如 (1 + 2) * (3 - 4),其中加號、減號運算符的優先級本身是要低於乘號運算符的,但由於使用了小括號,且結合性均是“左到右”,所以先計算 (1 + 2),再計算 (3 - 4),最後才將前兩者的結果相乘
優先級 | 運算符 | 含義 | 使用形式 | 結合性 | 說明 |
1 | [ ] | 數組下標 | 數組名[整型表達式] | 左到右 → | |
( ) | 圓括號 | (表達式) | |||
. | 成員選擇(對象) | 對象.成員名 | |||
-> | 成員選擇(指針) | 對象指針->成員名 | |||
++ | 自增運算符 | 變量名++ | 單目運算符 | ||
-- | 自減運算符 | 變量名-- | 單目運算符 | ||
2 | - | 負號運算符 | -表達式 | 右到左 ← | 單目運算符 |
(類型) | 強制類型轉換 | (數據類型)表達式 | 單目運算符 | ||
++ | 自增運算符 | ++變量名 | 單目運算符 | ||
-- | 自減運算符 | --變量名 | 單目運算符 | ||
* | 取值運算符 | *指針表達式 | 單目運算符 | ||
& | 取地址運算符 | &左值表達式 | 單目運算符 | ||
! | 邏輯非運算符 | !表達式 | 單目運算符 | ||
~ | 按位取反運算符 | ~表達式 | 單目運算符 | ||
sizeof | 長度運算符 | sizeof 表達式 或 sizeof(類型) | 單目運算符 | ||
3 | / | 除 | 表達式 / 表達式 | 左到右 → | 雙目運算符 |
* | 乘 | 表達式 * 表達式 | 雙目運算符 | ||
% | 余數(取模) | 整型表達式 % 整型表達式 | 雙目運算符 | ||
4 | + | 加 | 表達式 + 表達式 | 左到右 → | 雙目運算符 |
- | 減 | 表達式 - 表達式 | 雙目運算符 | ||
5 | << | 左移 | 表達式 << 表達式 | 左到右 → | 雙目運算符 |
>> | 右移 | 表達式 >> 表達式 | 雙目運算符 | ||
6 | > | 大於 | 表達式 > 表達式 | 左到右 → | 雙目運算符 |
>= | 大於等於 | 表達式 >= 表達式 | 雙目運算符 | ||
< | 小於 | 表達式 < 表達式 | 雙目運算符 | ||
<= | 小於等於 | 表達式 <= 表達式 | 雙目運算符 | ||
7 | == | 等於 | 表達式 == 表達式 | 左到右 → | 雙目運算符 |
!= | 不等於 | 表達式 != 表達式 | 雙目運算符 | ||
8 | & | 按位與 | 整型表達式 & 整型表達式 | 左到右 → | 雙目運算符 |
9 | ^ | 按位異或 | 整型表達式 ^ 整型表達式 | 左到右 → | 雙目運算符 |
10 | | | 按位或 | 整型表達式 | 整型表達式 | 左到右 → | 雙目運算符 |
11 | && | 邏輯與 | 表達式 && 表達式 | 左到右 → | 雙目運算符 |
12 | || | 邏輯或 | 表達式 || 表達式 | 左到右 → | 雙目運算符 |
13 | ?: | 條件運算符 | 表達式1? 表達式2: 表達式3 | 右到左 ← | 三目運算符 |
14 | = | 賦值運算符 | 變量 = 表達式 |
右到左 ← |
雙目運算符 |
/= | 除後賦值 | 變量 /= 表達式 | 雙目運算符 | ||
*= | 乘後賦值 | 變量 *= 表達式 | 雙目運算符 | ||
%= | 取模後賦值 | 變量 %= 表達式 | 雙目運算符 | ||
+= | 加後賦值 | 變量 += 表達式 | 雙目運算符 | ||
-= | 減後賦值 | 變量 -= 表達式 | 雙目運算符 | ||
<<= | 左移後賦值 | 變量 <<= 表達式 | 雙目運算符 | ||
>>= | 右移後賦值 | 變量 >>= 表達式 | 雙目運算符 | ||
&= | 按位與後賦值 | 變量 &= 表達式 | 雙目運算符 | ||
^= | 按位異或後賦值 | 變量 ^= 表達式 | 雙目運算符 | ||
|= | 按位或後賦值 | 變量 |= 表達式 | 雙目運算符 | ||
15 | , | 逗號運算符 | 表達式1,表達式2,表達式3,… | 左到右 → |
運算符的優先級和結合性