問:下面操作會輸出什麼?為什麼?
#includeint main(void)
答案:
輸出結果應該是這樣:
【l】【i 】
因為「++」和「 」的優先順序一樣,那麼就應該按照結合性來進行計算,
而這兩個操作符的結合性都是自右向左的,
所以 「ptr++」相當於「(ptr++)」 。
即應該先執行 ptr++ ,然後才是 ptr,
所以操作結果是「l」。第二個結果是「i」。操作符的優先順序與結合性是非常常見的乙個考點,
對於這部分內容來說,最容易易考察的就是++/--操作符、
*操作符、三目運算子、逗號運算子,
首先再來看一下運算子的優先順序與結合性:
上面是運算子的優先順序與結合性的列表,
自上而下,優先順序依次遞減。
許多同學可能看到這個之後覺得有點太多了,
要記下來非常困難,那麼我們總結出來一下幾句話,
只要記住這幾句話,那麼你就可以記住了:
偽運算子優先順序最高,單目運算子第二
算術運算子》比較運算子》位運算子》邏輯運算子
賦值運算子除逗號外最低
自右向左結合性的只有賦值運算子與單目運算子
這里有一道比較有意思的題目,大家可以簡單的看一下
設有語句句 int a=3;
則執行了語句 a+=a-=a*=a ;
變量 a 的值是
1、不同語言的優先順序是不同的
2、保證**簡潔,使用括號明確地表達運算順序,
不依賴於運算子的預設優先順序,
如果需要調整運算順序,用括號明確表達。
C語言操作符優先順序
c語言操作符優先順序 優先順序 運算子 含義 要求運算 物件的個數 結合方向 1 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子 自左至右 2 邏輯非運算子 1 單目運算子 自右至左 按位取反運算子 自增運算子 自減運算子 負號運算子 型別 型別轉換運算子 指標運算子 位址與運算子 si...
C語言操作符優先順序
c語言操作符優先順序 優先順序 運算子 含義 要求運算 物件的個數 結合方向 1 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子 自左至右 2 邏輯非運算子 1 單目運算子 自右至左 按位取反運算子 自增運算子 自減運算子 負號運算子 型別 型別轉換運算子 指標運算子 位址與運算子 si...
C語言操作符優先順序
c語言操作符優先順序 優先順序 運算子 含義 要求運算 物件的個數 結合方向 1 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子 自左至右 2 邏輯非運算子 1 單目運算子 自右至左 按位取反運算子 自增運算子 自減運算子 負號運算子 型別 型別轉換運算子 指標運算子 位址與運算子 si...