C語言弄搞優先順序 優先順序問題

2021-08-28 19:16:09 字數 1206 閱讀 5060

c語言易弄錯優先順序

1.".「的優先順序高於」*","->"操作符用於消除這類問題

*p.f
誤認:p所指物件的字段f。(*p).f

實際結果:對p取f偏移,作為指標,然後作為解除引用操作。*(p.f)*

2.優先順序高於*

int *ap
誤認:ap是個指向int陣列的指標。int (*ap)

實際結果:ap是個元素為int的指標陣列。int *(ap)

3.函式()高於*

int *fp()
誤認:fp是個函式指標,所指函式返回int。int (*fp)()

實際結果:fp是乙個函式,返回值為int *。int *(fp())

4.==和!=高於位運算

(val & mask != 0 )
誤認:(val & mask) != 0

實際結果:val & (mask != 0)

5.==和!=高於賦值運算

c = getchar() != eof
誤認:(c = getchar()) != eof

實際結果:c = (getchar() != eof)

6.算術運算高於位運算

msb << 4 + lsb
誤認:(msb << 4) + lsb

實際結果:msb << (4 + lsb)

7.","運算子在所有運算子中最低

[klaus@localhost keyword_study]$ cat priority.c

#include int main(void)

[klaus@localhost keyword_study]$ gcc priority.c

[klaus@localhost keyword_study]$ ./a.out

1[klaus@localhost keyword_study]$

c 語言優先順序

link blog id 2880933 寫 的時候,常會翻看的乙個表就是 c語言運算子優先順序表 c的運算子優先順序常常很讓人頭疼。其實,在大學裡學習c的時候,老師告訴大家這個不用一定背下來,用的時候可以找書,或者加小括號就可以了。我聽了,但是後來發現錯了。很多人都聽了,但不是每個人都發現這是錯的...

C語言優先順序

優先順序 運算子名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目運算子 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數名 單目運...

C語言優先順序

優先順序 運算子名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目運算子 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數名 單目運...