C語言面試題 操作符的優先順序

2021-08-13 21:48:29 字數 970 閱讀 7303

問:下面操作會輸出什麼?為什麼?

#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...