1. 程式人生 > >運算符的優先級和結合性

運算符的優先級和結合性

余數 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,… 左到右 →



運算符的優先級和結合性