C語言 運算子優先順序

來源:互聯網
上載者:User

醋罈酸味灌
味落跳福豆

共44個運算子

醋-初等,4個: ( ) [ ] -> 指向結構體成員 . 結構體成員
壇-單目,9個: ! ~ ++ -- -負號 (類型)   *指標 &取地址 sizeof長度 (結合方向:自右向左)
酸-算術,5個: * / % + -減
味-位移,2個: << >>
灌-關係,6個: < <= > >= == 等於 != 不等於
味-位邏,3個: & 按位與 ^ 按位異或 | 按位或
落-邏輯,2個: && 邏輯與 || 邏輯或
跳-條件,1個,三目: ? :                                                               (結合方向:自右向左)
福-賦值,11個: = += -= *= /= %= >>= <<= &= ^= |=                       (結合方向:自右向左)
豆-逗號,1個: ,
結合方向自右向左的只有三類:賦值、單目和三目,其它的都是從左至右結合。

注意:自己今天寫程式時候把關係運算子號和位邏輯的優先順序弄反。盡量用括弧,就不出問題。
如:if(P1OUT&BIT0==0)P1OUT ^=BIT0;         //判斷p1.0是否輸出為0,是就翻轉,即點亮LED.
這行程式是錯誤的。可兩邊加上括弧,即if((P1OUT&BIT0)==0),或是直接用:P1OUT|=BIT0;

具有最高優先順序的其實並不算是真正的運算子,它們算是一類特殊的操作。()是與函數相關,[]與數組相關,而->及.是取結構成員。
其次是單目運算子,所有的單目運算子具有相同的優先順序,因此在我認為的 真正的運算子中它們具有最高的優先順序,又由於它們都是從右至左結合的,因此*p++與*(p++)等效是毫無疑問的。
接下來是算術運算子,*、/、%的優先順序當然比+、-高了。
移位元運算符緊隨其後。
其次的關係運算子中,< <= > >=要比 == !=高一個層級,不大好理解。
所有的邏輯操作符都具有不同的優先順序(單目運算子出外,!和~)
邏輯位操作符的"與"比"或"高,而"異或"則在它們之間。
跟在其後的&&比||高。
接下來的是條件運算子,賦值運算子及逗號運算子。

在C語言中,只有4個運算子規定了運算方向,它們是&&、| |、條件運算子及賦值運算子。
&&、| |都是先計算左邊運算式的值,當左邊運算式的值能確定整個運算式的值時,就不再計算右邊運算式的值。如 a = 0 && b; &&運算子的左邊位0,則右邊運算式b就不再判斷。
在條件運算子中。如a?b:c;先判斷a的值,再根據a的值對b或c之中的一個進行求值。
賦值運算式則規定先對右邊的運算式求值,因此使 a = b = c = 6;成為可能。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.