C語言運算符優先級順口溜[轉]
醋壇酸味灌
味落跳福豆
共44個運算符
醋-初等,4個: ( ) [ ] -> 指向結構體成員 . 結構體成員
壇-單目,9個: ! ~ ++ -- -負號 (類型) *指針 &取地址 sizeof長度 (結合方向:自右向左)
酸-算術,5個: * / % + -減
味-位移,2個: << >>
灌-關系,6個: < <= > >= == 等于 != 不等于
味-位邏,3個: & 按位與 ^ 按位異或 | 按位或
落-邏輯,2個: && 邏輯與 || 邏輯或
跳-條件,1個,三目: ? : (結合方向:自右向左)
福-賦值,11個: = += -= *= /= %= >>= <<= &= ^= |= (結合方向:自右向左)
豆-逗號,1個: ,
結合方向自右向左的只有三類:賦值、單目和三目,其它的都是從左至右結合。
具有最高優先級的其實并不算是真正的運算符,它們算是一類特殊的操作。()是與函數相關,[]與數組相關,而->及.是取結構成員。
其次是單目運算符,所有的單目運算符具有相同的優先級,因此在我認為的 真正的運算符中它們具有最高的優先級,又由于它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。
接下來是算術運算符,*、/、%的優先級當然比+、-高了。
移位運算符緊隨其后。
其次的關系運算符中,< <= > >=要比 == !=高一個級別,不大好理解。
所有的邏輯操作符都具有不同的優先級(單目運算符出外,!和~)
邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。
跟在其后的&&比||高。
接下來的是條件運算符,賦值運算符及逗號運算符。
在C語言中,只有4個運算符規定了運算方向,它們是&&、| |、條件運算符及賦值運算符。
&&、| |都是先計算左邊表達式的值,當左邊表達式的值能確定整個表達式的值時,就不再計算右邊表達式的值。如 a = 0 && b; &&運算符的左邊位0,則右邊表達式b就不再判斷。
在條件運算符中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的一個進行求值。
賦值表達式則規定先對右邊的表達式求值,因此使 a = b = c = 6;成為可能
運算符按照優先級大小由上向下排列,在同一行的運算符具有相同優先級。第二行是所有的一元運算符。
運算符
| 解釋
| 結合方式
|
() [] -> .
| 括號(函數等),數組,兩種結構成員訪問
| 由左向右
|
! ~ ++ -- + -
* & (類型) sizeof
| 否定,按位否定,增量,減量,正負號,
間接,取地址,類型轉換,求大小
| 由右向左
|
* / %
| 乘,除,取模
| 由左向右
|
+ -
| 加,減
| 由左向右
|
<< >>
| 左移,右移
| 由左向右
|
< <= >= >
| 小于,小于等于,大于等于,大于
| 由左向右
|
== !=
| 等于,不等于
| 由左向右
|
&
| 按位與
| 由左向右
|
^
| 按位異或
| 由左向右
|
|
| 按位或
| 由左向右
|
&&
| 邏輯與
| 由左向右
|
||
| 邏輯或
| 由左向右
|
? :
| 條件
| 由右向左
|
= += -= *= /=
&= ^= |= <<= >>=
| 各種賦值
| 由右向左
|
,
| 逗號(順序)
| 由左向右 |
posted on 2008-07-18 15:00
fly 閱讀(838)
評論(0) 編輯 收藏 所屬分類:
C/C++學習