符號 分節7(運算子的優先順序上)

2021-07-23 13:53:40 字數 1590 閱讀 1226

運算子的優先順序表

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...