運算子的優先順序表
c 語言的符號眾多,由這些符號又組合成了各種各樣的運算子。
既然是運算子就一定有 其特定的優先順序,下表就是c 語言運算子的優先順序表: 優先順序運算子名稱或含義使用形式結合方向說。
1 陣列下標陣列名[常量表示式] 左到右 () 圓括號
(表示式)/函式名(形 參表)
. 成員選擇(物件) 物件.成員名
-> 成員選擇(指標) 物件指標->成員名
2 - 負號運算子
-表示式 右到左
單目運算子
(型別) 強制型別轉換
(資料型別)表示式
++ 自增運算子
++變數名/變數名++
單目運算子
-- 自減運算子--變數名/變數名--
單目運算子
* 取值運算子
*指標變數單目運算子
& 取位址運算子
&變數名
單目運算子
! 邏輯非運算子
!表示式單目運算子
~ 按位取反運算子
~表示式單目運算子
sizeof 長度運算子
sizeof(表示式)
3 / 除表示式/表示式 左到右 雙目運算子
* 乘表示式*表示式雙目運算子
% 餘數(取模) 整型表示式/整型表 達式
雙目運算子
4 + 加表示式+表示式 左到右 雙目運算子
- 減表示式-表示式雙目運算子 5
<< 左移變數《表示式 左到右 雙目運算子
>> 右移變數》表示式雙目運算子 6
> 大於表示式》表示式 左到右 雙目運算子
>= 大於等於表示式》=表示式雙目運算子 < 小於表示式《表示式雙目運算子
<= 小於等於表示式<=表示式雙目運算子 7
== 等於表示式==表示式 左到右 雙目運算子
!= 不等於表示式!= 表示式雙目運算子
8 & 按位與表示式&表示式左到右雙目運算子
9 ^ 按位異或表示式^表示式左到右雙目運算子
10 | 按位或表示式|表示式左到右雙目運算子
11 && 邏輯與表示式&&表示式左到右雙目運算子
12 || 邏輯或表示式||表示式左到右雙目運算子
13 ?: 條件運算子 表示式1? 表示式2: 表示式3 右到左三目運算子
14 = 賦值運算子變數
=表示式 右到左
/= 除后賦值變數/=表示式
*= 乘後賦值變數*=表示式
%= 取模後賦值變數%=表示式
+= 加後賦值變數+=表達
-= 減後賦值變數-=表示式 <<=
左移後賦值變數<<=表示式 >>= 右移後賦值變數》=表示式
注:同一優先順序的運算子,運算次序由結合方向所決定。
上表不容易記住。其實也用不著死記,用得多,看得多自然就記得了。
也有人說不用記 這些東西,只要記住乘除法的優先順序比加減法高就行了,別的地方一律加上括號。
這在你自 己寫**的時候,確實可以,但如果是你去閱讀和理解別人的**呢?別人不一定都加上括 號了吧?
所以,記住這個表,我個人認為還是很有必要的。
符號 分節8(運算子的優先順序下)
一些容易出錯的優先順序問題 上表中,優先順序同為1 的幾種運算子如果同時出現,那怎麼確定表示式的優先順序呢?這是很多初學者迷糊的地方。這些容易出錯的情況,希望讀者好好在編譯器上除錯除錯,這樣印象會深一些。一定要多除錯,光靠看 水平是很難提上來的。除錯 才是最長水平的。按位與後賦值變數 表示式 按位異...
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...
運算子優先順序 Python 運算子優先順序
python 運算子優先順序 運算子描述 lambda lambda表示式 or布林 或 and布林 與 not x 布林 非 in,not in 成員測試 is,is not 同一性測試 比較 按位或 按位異或 按位與 移位 加法與減法 乘法 除法與取餘 x,x 正負號 x 按位翻轉 指數 x.a...