C語言之運算子優先順序

2021-09-25 18:38:56 字數 2359 閱讀 4039

在乙個表示式中可能包含多個有不同運算子連線起來的、具有不同資料型別的資料物件;由於表示式有多種運算,不同的結合順序可能得出不同結果甚至出現錯誤運算錯誤,因為當表示式中含多種運算時,必須按一定順序進行結合,才能保證運算的合理性和結果的正確性、唯一性。

優先順序從上到下依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。表示式的結合次序取決於表示式中各種運算子的優先順序。優先順序高的運算子先結合,優先順序低的運算子後結合,同一行中的運算子的優先順序相同。

優先順序與求值順序無關。如a+b && b*c,雖然*優先順序最高,但這個表示式求值順序是從左到右。

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

相同優先順序中,按結合性進行結合。大多數運算子結合性是從左到右,只有三個優先順序是從右至左結合的,它們是單目運算子、條件運算子、賦值運算子。

基本的優先順序需要記住:

指標最優,單目運算優於雙目運算。如正負號。

先算術運算,後移位運算,最後位運算。請特別注意:1 << 3 + 2 & 7等價於 (1 << (3 + 2))&7.

邏輯運算最後結合。

優先順序運算子

名稱或含義

使用形式

結合方向

說明陣列下標

陣列名[整型表示式]

左到右圓括號

(表示式)/函式名(形參表)

成員選擇(物件)

物件.成員名

成員選擇(指標)

物件指標->成員名

負號運算子

-算術型別表示式

右到左單目運算子

(type)

強制型別轉換

(純量資料型別)純量表示式

自增運算子

++純量型別可修改左值表示式

單目運算子

自減運算子

--純量型別可修改左值表示式

單目運算子

取值運算子

*指標型別表示式

單目運算子

取位址運算子

&表示式

單目運算子

邏輯非運算子

!純量型別表示式

單目運算子

按位取反運算子

~整型表示式

單目運算子

sizeof

長度運算子

sizeof 表示式

sizeof(型別)3除

表示式/表示式

左到右雙目運算子

乘表示式*表示式

雙目運算子

餘數(取模)

整型表示式%整型表示式

雙目運算子

加表示式+表示式

左到右雙目運算子

減表示式-表示式

雙目運算子

左移整型表示式《整型表示式

左到右雙目運算子

右移整型表示式》整型表示式

雙目運算子

大於表示式》表示式

左到右雙目運算子

大於等於

表示式》=表示式

雙目運算子

小於表示式《表示式

雙目運算子

小於等於

表示式<=表示式

雙目運算子

等於表示式==表示式

左到右雙目運算子

不等於表示式!= 表示式

雙目運算子

按位與整型表示式&整型表示式

左到右雙目運算子

按位異或

整型表示式^整型表示式

左到右雙目運算子

按位或整型表示式|整型表示式

左到右雙目運算子

邏輯與表示式&&表示式

左到右雙目運算子

邏輯或表示式||表示式

左到右雙目運算子

條件運算子

表示式1? 表示式2: 表示式3

右到左三目運算子

賦值運算子

可修改左值表示式=表示式

右到左除後賦值

可修改左值表示式/=表示式

乘後賦值

可修改左值表示式*=表示式

取模後賦值

可修改左值表示式%=表示式

加後賦值

可修改左值表示式+=表示式

減後賦值

可修改左值表示式-=表示式

左移後賦值

可修改左值表示式<<=表示式

右移後賦值

可修改左值表示式》=表示式

按位與後賦值

可修改左值表示式&=表示式

按位異或後賦值

可修改左值表示式^=表示式

按位或後賦值

可修改左值表示式|=表示式

逗號運算子

表示式,表示式,…

左到右從左向右順序結合

說明:同一優先順序的運算子,結合次序由結合方向所決定。

簡單記就是:! > 算術運算子 > 關係運算子 > && > || > 賦值運算子

c語言之運算子優先順序

c語言之運算子優先順序 c語言運算子優先順序 優先順序 運算子 名稱或含義 使用形式 結合方向 說明 1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名 2 負號運算子 表示式 右到左 單目運算子 按位取反運算子 ...

運算子優先順序 C 運算子優先順序

c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...

C語言運算子優先順序

優先順序運算子 名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目運算子 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數名 單目運...