C語言運算子優先順序
每當想找哪個運算子優先順序高時,很多時候總是想找的就沒有,真讓人氣憤!現在,終於有個我個人覺得非常全的,分享給大家,歡迎拍磚!
C語言運算子優先順序
優先順序 | 運算子 | 名稱或含義 | 使用形式 | 結合方向 | 說明 |
1 | [] | 陣列下標 | 陣列名[常量表達式] | 左到右 | -- |
() | 圓括號 | (表示式)/函式名(形參表) | -- | ||
. | 成員選擇(物件) | 物件.成員名 | -- | ||
-> | 成員選擇(指標) | 物件指標->成員名 | -- | ||
2 | - | 負號運算子 | -表示式 | 右到左 | 單目運算子 |
~ | 按位取反運算子 | ~表示式 | |||
++ | 自增運算子 | ++變數名/變數名++ | |||
-- | 自減運算子 | --變數名/變數名-- | |||
* | 取值運算子 | *指標變數 | |||
& | 取地址運算子 | &變數名 | |||
! | 邏輯非運算子 | !表示式 | |||
(型別) | 強制型別轉換 | (資料型別)表示式 | -- | ||
sizeof | 長度運算子 | sizeof(表示式) | -- | ||
3 | / | 除 | 表示式/表示式 | 左到右 | 雙目運算子 |
* | 乘 | 表示式*表示式 | |||
% | 餘數(取模) | 整型表示式%整型表示式 | |||
4 | + | 加 | 表示式+表示式 | 左到右 | 雙目運算子 |
- | 減 | 表示式-表示式 | |||
5 | << | 左移 | 變數<<表示式 | 左到右 | 雙目運算子 |
>> | 右移 | 變數>>表示式 | |||
6 | > | 大於 | 表示式>表示式 | 左到右 | 雙目運算子 |
>= | 大於等於 | 表示式>=表示式 | |||
< | 小於 | 表示式<表示式 | |||
<= | 小於等於 | 表示式<=表示式 | |||
7 | == | 等於 | 表示式==表示式 | 左到右 | 雙目運算子 |
!= | 不等於 | 表示式!= 表示式 | |||
8 | & | 按位與 | 表示式&表示式 | 左到右 | 雙目運算子 |
9 | ^ | 按位異或 | 表示式^表示式 | 左到右 | 雙目運算子 |
10 | | | 按位或 | 表示式|表示式 | 左到右 | 雙目運算子 |
11 | && | 邏輯與 | 表示式&&表示式 | 左到右 | 雙目運算子 |
12 | || | 邏輯或 | 表示式||表示式 | 左到右 | 雙目運算子 |
13 | ?: | 條件運算子 | 表示式1? 表示式2: 表示式3 | 右到左 | 三目運算子 |
14 | = | 賦值運算子 | 變數=表示式 | 右到左 | -- |
/= | 除後賦值 | 變數/=表示式 | -- | ||
*= | 乘後賦值 | 變數*=表示式 | -- | ||
%= | 取模後賦值 | 變數%=表示式 | -- | ||
+= | 加後賦值 | 變數+=表示式 | -- | ||
-= | 減後賦值 | 變數-=表示式 | -- | ||
<<= | 左移後賦值 | 變數<<=表示式 | -- | ||
>>= | 右移後賦值 | 變數>>=表示式 | -- | ||
&= | 按位與後賦值 | 變數&=表示式 | -- | ||
^= | 按位異或後賦值 | 變數^=表示式 | -- | ||
|= | 按位或後賦值 | 變數|=表示式 | -- | ||
15 | , | 逗號運算子 | 表示式,表示式,… | 左到右 | -- |
說明:
同一優先順序的運算子,運算次序由結合方向所決定。
簡單記就是:! > 算術運算子 > 關係運算符 > && > || > 賦值運算子
轉自:https://blog.csdn.net/huangblog/article/details/8271791