c語言運算子存在的問題
優先順序問題
表示式人們可能誤以為的結果
實際結果
.的優先順序高於*
->運算子用於消除這個問題
*p.f
p所指向的字段f (*p).f
對p取f偏移,作為指標,然後進行解除引用操作 *(p.f)
[ ]高於*
int *ap
ap是乙個指向int陣列的指標 int (*ap)
ap是個元素為int指標的陣列,int*(ap)
函式高於*
int *func()
fp是個函式指標,返回值指向int,int(*fp)()
fp是個函式,返回int*,int *(fp())
==和!=高於位運算子
(val & mask != 0)
(val & mask) != 0
val &(mask !=0)
==和!=高於賦值運算子
c = getchar() != ecf
(c = getchar()) != ecf
c = (getchar() != ecf)
演算法運算子高於移位運算子
msb << 4 + lsb
(msb << 4) + lsb
msb << (4 + lsb)
逗號運算子優先順序最低
i = 1,2
i = (1,2)這樣的話i的結果是2而不是1
(i = 1),2最終結果i的值是1而不是2
C語言運算子優先順序存在的問題
c語言中的符號過載 c專家程式設計,2.3誤做之過,p38 優先順序問題 表示式人們可能誤以為的結果 實際結果 的優先順序高於 操作符用於消除這個問題 p.f p所指物件的字段f p f 對p取f偏移,作為指標,然後進行解除引用操作 p.f 高於 int ap ap是個指向int陣列的指標 int ...
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...
C語言運算子優先順序
優先順序運算子 名稱或含義 使用形式 結合方向說明1 陣列下標 陣列名 常量表示式 左到右 圓括號 表示式 函式名 形參表 成員選擇 物件 物件.成員名 成員選擇 指標 物件指標 成員名2 負號運算子 表示式 右到左單目運算子 型別 強制型別轉換 資料型別 表示式 自增運算子 變數名 變數名 單目運...