天天看點

C語言優先級的題,C語言面試題----操作符的優先級

版權聲明:本文轉載于公衆号TeachPlus---C語言面試題---操作符的優先級

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

#include

int main(void)

{

char *ptr ="Linux";

printf("\n [%c] \n",*ptr++);

printf("\n [%c] \n",*ptr);

return 0;

}

答案:

輸出結果應該是這樣:

【L】

【i 】

本題解析

因為“++”和“ ”的優先級一樣,那麼就應該按照結合性來進行計算,

而這兩個操作符的結合性都是自右向左的,

是以 “ptr++”相當于“(ptr++)” 。

即應該先執行 ptr++ ,然後才是 ptr,

是以操作結果是“L”。第二個結果是“i”。

相關知識點

操作符的優先級與結合性是非常常見的一個考點,

對于這部分内容來說,最容易易考察的就是++/--操作符、*操作符、三目運算符、逗号運算符,

首先再來看一下運算符的優先級與結合性:

C語言優先級的題,C語言面試題----操作符的優先級

上面是運算符的優先級與結合性的列表,

自上而下,優先級依次遞減。

許多同學可能看到這個之後覺得有點太多了,

要記下來非常困難,那麼我們總結出來一下幾句話,

隻要記住這幾句話,那麼你就可以記住了:

僞運算符優先級最高,單目運算符第二

算術運算符>比較運算符>位運算符>邏輯運算符

指派運算符除逗号外最低

自右向左結合性的隻有指派運算符與單目運算符

這里有一道比較有意思的題目,大家可以簡單的看一下

設有語句句 int a=3;

則執行了語句 a+=a-=a*=a ;

變量 a 的值是

答案:

大家可以思考下。

不過不建議大家強行去記操作符的優先級表,有以下幾個原因:

1、不同語言的優先級是不同的

2、保證代碼簡潔,使用括号明确地表達運算順序,

不依賴于運算符的預設優先級,

如果需要調整運算順序,用括号明确表達。