操作符及其优先级
static :在函数内部,表示该变量的值在各个调用之间一直保持延续性。
在函数这一级,表示该函数只对本文件可见。
extern:用于函数定义,表示全局可见。
用于变量,表示它在其他地方定义。
优先级 |
表达式 |
实际结果 |
可能误认为的结果 |
.的优先级高于* | *p.f | 对p取f偏移,作为指针,然后 进行解除 引用操作。*(p.f) |
p所指对象的字段f,(*p).f |
[ ]高于* | int *ap[] | ap是一个数组,数组存储int指针 | ap是个指向int数组的指针,int(*ap)[ ] |
函数()高于* | int *fp() | fp是个函数,返回int*,int *(fp()) | fp是个函数指针,所指函数返回int,int (*fp)() |
==和!=高于位操作符 | (val & mask != 0) | val & (mask != 0) | (val & mask) != 0 |
算术运算符高于移位运算符 | msb << 4+lsb | msb << (4 + lsb) | (msb << 4) + lsb |
->的优先级高于* | *p->f | *(p->f) |