C語言運算子優先順序存在的問題

2022-07-25 18:39:09 字數 737 閱讀 3616

c語言中的符號過載(c專家程式設計,2.3誤做之過,p38)

優先順序問題

表示式人們可能誤以為的結果

實際結果

.的優先順序高於*

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

*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())!=0

c=(getchar()!=eof)

算術運算高於移位運算子

msb<<4+lsb

(msb<<4)+lsb

msb<<(4+lsb)

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

i=1,2

i=(1,2)

(i=1),2

c語言運算子優先順序存在的問題

c語言運算子存在的問題 優先順序問題 表示式人們可能誤以為的結果 實際結果 的優先順序高於 運算子用於消除這個問題 p.f p所指向的字段f p f 對p取f偏移,作為指標,然後進行解除引用操作 p.f 高於 int ap ap是乙個指向int陣列的指標 int ap ap是個元素為int指標的陣列...

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

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

C語言運算子優先順序

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