C 中一些常错的优先级运用


 . 优先级高于 *

*p.f                       // *(p.f): 对 p 取 f 偏移, 作为指针, 然后进行解除引用操作


[] 高于 *

int *ap[] ;                // int *(ap[]): ap是个元素为 int 指针的数组

 函数 () 高于 *

int *fp() ;                // int *(fp()): fp 是个函数, 返回 int *


++ 高于 *

const char *p = "123456789" ;
while ('\0' != *p++)
{
// ...
}


!= 高于任何位运算

(var & mask != 0) ;        // var & (mask != 0)

== 和 != 高于 =

(c = getchar() != EOF) ;   // c = (getchar() != EOF)

 算术运算符高于位移运算符

msb << 4 + lab ;           // msb << (4 + lab)


逗号运算符在所有运算符中优先级最低

i = 1, 2 ;                 // (i = 1), 2
posted @ 2011-07-17 23:09  walfud  阅读(120)  评论(0编辑  收藏  举报