C語言的運算子順序
阿新 • • 發佈:2018-12-09
在一個表示式中可能包含多個有不同運算子連線起來的、具有不同資料型別的資料物件;由於表示式有多種運算,不同的運算順序可能得出不同結果甚至出現錯誤運算錯誤,因為當表示式中含多種運算時,必須按一定順序進行結合,才能保證運算的合理性和結果的正確性、唯一性。
第一列 | 運算子 | 名稱或含義 | 使用形式 | 結合方向 |
---|---|---|---|---|
單目運算子 | [] | 陣列下標 | 陣列名[整型表示式] | 左到右 |
() | 圓括號 | (表示式)/函式名(形參表) | ||
. | 成員選擇(物件) | 物件.成員名 | ||
-> | 成員選擇(指標) | 物件指標->成員名 | ||
前述運算子 | - | 負號運算子 | -算術型別表示式 | 右到左 |
(type) | 強制型別轉換 | (純量資料型別)純量表達式 | ||
++ | 自增運算子 | ++純量型別可修改左值表示式 | ||
– | 自減運算子 | –純量型別可修改左值表示式 | ||
* | 取值運算子 | *指標型別表示式 | ||
& | 取地址運算子 | &表示式 | ||
! | 邏輯非運算子 | !純量型別表示式 | ||
~ | 按位取反運算子 | ~整型表示式 | ||
sizeof | 長度運算子 | sizeof 表示式, sizeof(型別) | ||
算術運算子 | / | 除 | 表示式/表示式 | 左到右 |
* | 乘 | 表示式*表示式 | ||
% | 餘數(取模) | 整型表示式%整型表示式 | ||
+ | 加 | 表示式+表示式 | ||
- | 減 | 表示式-表示式 | ||
移位運算子 | << | 左移 | 整型表示式<<整型表示式 | |
>> | 右移 | 整型表示式>>整型表示式 | ||
關係運算符 | > | 大於 | 表示式>表示式 | |
>= | 大於等於 | 表示式>=表示式 | ||
< | 小於 | 表示式<表示式 | ||
<= | 小於等於 | 表示式<=表示式 | ||
== | 等於 | 表示式==表示式 | ||
!= | 不等於 | 表示式!= 表示式 | ||
邏輯運算子 | & | 按位與 | 整型表示式&整型表示式 | |
^ | 按位異或 | 整型表示式^整型表示式 | ||
| | 按位或 | 整型表示式|整型表示式 | ||
&& | 邏輯與 | 表示式&&表示式 | ||
|| | 邏輯或 | 表示式||表示式 | ||
條件運算子 | ?: | 條件運算子 | 表示式1? 表示式2: 表示式3 | 右到左 |
賦值運算子 | = | 賦值運算子 | 可修改左值表示式=表示式 | |
/= | 除後賦值 | 可修改左值表示式/=表示式 | ||
*= | 乘後賦值 | 可修改左值表示式*=表示式 | ||
%= | 取模後賦值 | 可修改左值表示式%=表示式 | ||
+= | 加後賦值 | 可修改左值表示式+=表示式 | ||
-= | 減後賦值 | 可修改左值表示式-=表示式 | ||
<<= | 左移後賦值 | 可修改左值表示式<<=表示式 | ||
>>= | 右移後賦值 | 可修改左值表示式>>=表示式 | ||
&= | 按位與後賦值 | 可修改左值表示式&=表示式 | ||
^= | 按位異或後賦值 | 可修改左值表示式^=表示式 | ||
| = | 按位或後賦值 | 可修改左值表示式|=表示式 | ||
符號運算子 | , | 逗號運算子 | 表示式,表示式,… | 左到右 |