C語言運算子優先順序誤解

2022-01-19 21:03:56 字數 707 閱讀 3424

優先順序問題

表示式可能誤以為的結果

實際結果

.的優先順序高於*。

->操作符用於消除這個問題

*p.f

p所指物件的字段f。

(*p).f

對p去f偏移,作為指標,然後進行解除引用操作。

*(p.f)

高於*int *ap

ap是個指向int陣列的指標。

int(*ap)

ap是個元素為int指標的陣列。

int *(ap)

函式()高於*

int *fp()

fp是個函式指標,所指函式返回int。

int(*fp)()

fp是個函式,返回int*。

int *(fp())

==和!=高於位操作符

(val&mask!=0)

(val&mask)!=0

val&(mask!=0)

==和!=高於賦值符

c=getchar()!=eof

(c=getchar())!=eof

c=(getchar()!=eof)

算術運算高於移位運算子

msb<<4+lsb

(msb<<4)+lsb

msb<<(4+lsb)

逗號運算子在所有運算子中優先順序最低

i=1,2

i=(1,2)

(i=1),2

運算子優先順序 C 運算子優先順序

c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...

C語言運算子優先順序

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

c語言運算子優先順序

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