C語言運算符優先級說明


下面按優先級從高到低的順序總結一下各種運算符,每一條所列的各運算符具有相同的優先 級,對於同一優先級的多個運算符按什么順序計算也有說明,雙目運算符就簡單地用“左結 合”或“右結合”來說明了。和指針有關的運算符* & ->也在這里列出來了,以后再詳細解釋。

1 、標識符、常量、字符串和用()括號套起來的表達式是組成表達式的最基本單元,在運算中做 操作數,優先級最高。

2、后綴運算符,包括數組取下標[]、函數調用()、結構體取成員.、指向結構體的指針取成員- >、后綴自增++、后綴自減--。如果一個操作數后面有多個后綴,按照離操作數從近到遠的順序 (也就是從左到右)依次運算,比如a.name++,先算a.name,再++,這里的.name應該看成a的 一個后綴,而不是把. 看成雙目運算符。

3、單目運算符,包括前綴自增++、前綴自減--、 sizeof、類型轉換()、取地址運算&、指針間接 尋址*、正號+、負號-、按位取反~、邏輯非! 。如果一個操作數前面有多個前綴,按照離操作數 從近到遠的順序(也就是從右到左)依次運算,比如!~a,先算~a,再求!。

4、乘*、除/、模%運算符。這三個運算符是左結合的。 5、加+、減-運算符。左結合。

6、移位運算符<<和>>。左結合。

7、關系運算符< > <= >=。左結合。

8、相等性運算符==和!=。左結合。

9、按位與&。左結合。

10、按位異或^。左結合。

11 、按位或|。左結合。

12、邏輯與&&。左結合。

13、邏輯或||。左結合。

14、條件運算符:?。在第 2 節 “if/else語句”講過Dangling-else問題,條件運算符也有類似的問 題。例如a ? b : c ? d : e是看成(a ? b : c) ? d : e還是a ? b : (c ? d : e) ? C語言規 定是后者。

15、賦值=和各種復合賦值(*= /= %= += -= <<= >>= &= ^= |=)。右結合。

16、逗號運算符。左結合。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM