C語言運算符優先級、結合性、計算順序,計算(++i) + (++i) + (++i)

今天主要針對c語言運算符的優先級以及結合性,計算順序與大家分享我的心得:

1.優先級:數組下標、函數調用操作符、結構體成員選擇操作符   >  單目操作符  >  雙目操作符(其中乘,除,求餘比加減優先級高)  >  移位運算符  >  關係運算符(!=,==運算符要比其他關係運算符優先級低)  > 按位運算符(依次順序爲&,^,|)  > 順序運算符(&&,||)

> 條件運算符 > 逗號運算符

2.結合性:除了單目運算符、條件運算符、賦值運算符是自右至左外其餘都是自左至右;

3.計算順序:只有4個運算符被規定了操作數的計算次序,它們是&&,||,逗號運算符(,),條件運算符(?:)

以++i + ++i + ++i例說明結合性以及求值順序;

首先++優先級高於+,所以等價於(++i) + (++i) + (++i)

因爲 + 是自左至右結合,所以等價於((++i) + (++i)) + (++i)

但是因爲 + 沒有規定計算順序,因此,其結果會根據編譯器的不同而不同;

一種情形就是先計算((++i) + (++i))中的(++i),假設int i = 1;則((++i) + (++i)) = 6,到這一步i的值爲 3,則++i + ++i + ++i 結果爲10

 

備註:不一定對,把自己的理解與大家分享,希望能夠得到批評指正。

 

 

 

 

                   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章