c語言運算符號優(yōu)先級別
1級優(yōu)先級 左結(jié)合
() 圓括號
[] 下標(biāo)運算符
-> 指向結(jié)構(gòu)體成員運算符
. 結(jié)構(gòu)體成員運算符
2級優(yōu)先級 右結(jié)合
! 邏輯非運算符
~ 按位取反運算符
++ 自增運算符
-- 自減運算符
- 負(fù)號運算符
(類型) 類型轉(zhuǎn)換運算符
* 指針運算符
& 地址與運算符
sizeof 長度運算符
3級優(yōu)先級 左結(jié)合
* 乘法運算符
/ 除法運算符
% 取余運算符
4級優(yōu)先級 左結(jié)合
+ 加法運算符
- 減法運算符
5級優(yōu)先級 左結(jié)合
<< 左移運算符
>> 右移運算符
6級優(yōu)先級 左結(jié)合
<、<=、>、>= 關(guān)系運算符
7級優(yōu)先級 左結(jié)合
== 等于運算符
!= 不等于運算符
8級優(yōu)先級 左結(jié)合
& 按位與運算符
9級優(yōu)先級 左結(jié)合
^ 按位異或運算符
10級優(yōu)先級 左結(jié)合
| 按位或運算符
11級優(yōu)先級 左結(jié)合
&& 邏輯與運算符
12級優(yōu)先級 左結(jié)合
|| 邏輯或運算符
13級優(yōu)先級 右結(jié)合
? : 條件運算符
14級優(yōu)先級 右結(jié)合
= += -= *= /= %= &= ^= |= <<= >>= 全為賦值運算符
15級優(yōu)先級 左結(jié)合
, 逗號運算符
——————————————————————————————————————
優(yōu)先級從上到下依次遞減,最上面具有最高的優(yōu)先級,逗號操作符具有最低的優(yōu)先級。
所有的優(yōu)先級中,只有三個優(yōu)先級是從右至左結(jié)合的,它們是單目運算符、條件運算符、賦值運算符。其它的都是從左至右結(jié)合。
具有最高優(yōu)先級的其實并不算是真正的運算符,它們算是一類特殊的操作。()是與函數(shù)相關(guān),[]與數(shù)組相關(guān),而->及.是取結(jié)構(gòu)成員。
其次是單目運算符,所有的單目運算符具有相同的優(yōu)先級,因此在我認(rèn)為的 真正的運算符中它們具有最高的優(yōu)先級,又由于它們都是從右至左結(jié)合的,因此*p++與*(p++)等效是毫無疑問的。
接下來是算術(shù)運算符,*、/、%的優(yōu)先級當(dāng)然比+、-高了。
移位運算符緊隨其后。
其次的關(guān)系運算符中,< <= > >=要比 == !=高一個級別,不大好理解。
所有的邏輯操作符都具有不同的優(yōu)先級(單目運算符出外,!和~)
邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。
跟在其后的&&比||高。
接下來的是條件運算符,賦值運算符及逗號運算符。
在C語言中,只有4個運算符規(guī)定了運算方向,它們是&&、| |、條件運算符及賦值運算符。
&&、| |都是先計算左邊表達(dá)式的值,當(dāng)左邊表達(dá)式的值能確定整個表達(dá)式的值時,就不再計算右邊表達(dá)式的值。如 a = 0 && b; &&運算符的左邊位0,則右邊表達(dá)式b就不再判斷。
在條件運算符中。如a?b:c;先判斷a的值,再根據(jù)a的值對b或c之中的一個進(jìn)行求值。
賦值表達(dá)式則規(guī)定先對右邊的表達(dá)式求值,因此使 a = b = c = 6;成為可能
編輯:admin 最后修改時間:2018-05-22