C C 運算子優先順序列表

2021-04-15 10:37:58 字數 1405 閱讀 8703

c語言的操作符共有15個優先順序,如下:

operators     associativity

() -> .     left to right

! ~ ++ -- + - * (type) sizeof     right to left

* / %      left to right

+ -      left to right

<<  >>      left to right

< <= > >=      left to right

== !=      left to right

&      left to right

^      left to right

|      left to right

&&     left to right

||      left to right

?:      right to left

= += -= *= /= %= &= ^= |= <<= >>=     right to left

,      left to right

優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。

所有的優先順序中,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。其它的都是從左至右結合。

具有最高優先順序的其實並不算是真正的運算子,它們算是一類特殊的操作。()是與函式相關,與陣列相關,而->及.是取結構成員。

其次是單目運算子,所有的單目運算子具有相同的優先順序,因此在我認為的 真正的運算子中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。

接下來是算術運算子,*、/、%的優先順序當然比+、-高了。

移位運算子緊隨其後。

其次的關係運算子中,< <= > >=要比 == !=高乙個級別,不大好理解。

所有的邏輯操作符都具有不同的優先順序(單目運算子出外,!和~)

邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。

跟在其後的&&比||高。

接下來的是條件運算子,賦值運算子及逗號運算子。

c語言中,只有4個運算子規定了運算方向,它們是&&、| |、條件運算子及賦值運算子。

&&、| |都是先計算左邊表示式的值,當左邊表示式的值能確定整個表示式的值時,就不再計算右邊表示式的值。如 a = 0 && b; &&運算子的左邊位0,則右邊表示式b就不再判斷。

在條件運算子中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的乙個進行求值。

賦值表示式則規定先對右邊的表示式求值,因此使 a = b =c= 6;成為可能。

C C 運算子優先順序

c運算子優先順序 運算子及結合性 功能 用法 l 函式呼叫 name expr list 下標 variable expr 成員選擇 object.member 成員選擇 pointer member r 後輟自增 lvalue 後輟自減 lvalue r sizeof 前輟自增 lvalue 前輟...

C C 運算子優先順序

c語言中的運算子 說明 運算子結合性 初等運算子 單目運算子 型別 sizeof 算術運算子 算術運算子 移位運算子 關係運算子 關係運算子 按位與 按位異或 按位或 邏輯與 邏輯或 條件運算子 賦值運算子 逗號運算子 c 語言中的運算子 運算子描述結合性 二元作用域 一元作用域 typeid dy...

運算子優先順序列表

precedence operator description example associativity1 grouping operator array access member access from a pointer member access from an object scopin...