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