易错优先级

优先级 表达式 误认为结果 实际结果

.的优先级高于*

(->操作符用于消除此问题)

*p.f

p所指对象的字段f

(即,误认为是(*p).f)

对p取f偏移,作为指针,然后进行解除引用操作

(即,实际为*(p.f))

[]高于* int *p[]

p是个指向int数组的指针

(即,误认为int (*p)[])

p是个元素为int指针的数组

(即,实际int *(p[]))

函数()高于* int *p() 误认为int (*p)() 实际int *(p())
==和!=高于位操作 (val & mask !=0) (val & mask)!=0 val & (mask !=0)
==和!=高于赋值符 c=getchar() !=EOF (c=getchar())!=EOF c=(getchar()!=EOF)
算术运算符高于位移运算符 m<<4+1 (m<<4)+1 m<<(4+1)
逗号运算符在所有运算符中优先级最低 i=1,2 i=(1,2) (i=1),2
posted @ 2015-12-05 16:30  chris_chan1024  阅读(170)  评论(0编辑  收藏  举报