C語言運算子的優先順序表與結合性要點

來源:互聯網
上載者:User
運算式 優先順序
()(小括弧) [](數組下標) .(結構成員) ->(指標型結構成員) 最高
!(邏輯非) .(位取反) -(負號) ++(加1) --(減1) &(變數地址)  
*(指標所指內容)  type(函數說明)  sizeof(長度計算) 
*(乘)     /(除)     %(模數) 
+(加)     -(減) 
<<(位左移)          >>(位右移)
<(小於)   <=(小於等於)   >(大於)   >=(大於等於)
==(等於)       !=(不等於) 
&(位與)
^(位異或) 
|(位或)
&&(邏輯與)
||(邏輯或) 
?:(?運算式) 
=    +=   -=(聯合操作)
,(逗號運算子)  最低

 

1. .的優先順序高於*。->操作符用於消除這個問題。

       *p.f變成了*(p.f)而不是(*p).f

2. []高於*,於是int *ap[]中的ap變成了元素為int指標的數組。

3. 函數()高於*,因此,int *fp()不再是函數指標了,而是一個函數,返回int *。

4. 逗號運算子在所有運算子中優先順序最低,所以,i = 1, 2就成了(i = 1), 2而不是i = (1, 2)。

       逗號運算子的值是最右邊運算元的值,逗號運算子結合性從左至右,因此又稱為順序求值運算子。

5. 在運算式中如果有布爾操作、算術運算、位操作等混合計算,始終應該在適當的地方加上括弧。

        x = f() + g() * h(); 乘法先於加法執行,但是g()和h()的調用可能以任何順序出現。同樣,f()可能在乘法之前調用,也可能在乘法之後調用。

 

優先順序和結合性規則告訴你哪些符號組成一個意群,大部分這樣的意群內部如何進行計算的次序是未定義的。

有些操作符,如&&和||等,其運算元的計算順序是確定的,它們使用短路原則。

 

C語言中記住兩個優先順序就夠了:乘法和除法先於加法和減法,在涉及其他動作符時一律加上括弧。

結合性用於在幾個操作符具有相同的優先順序時確定先執行哪一個。

每個操作符擁有某一層級的優先順序,同時也擁有左結合性或者右結合性。

 

所有的賦值符(包括複合賦值符)都具有結合性(從右至左執行),因此可以使用連等的賦值形式。

唯一的三目運算子?:也是具有右結合性的。

 

所有優先順序相同的操作符,它們的結合性也相同,這是必須如此的。

在函數調用中,各個參數的計算順序是不確定的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.