优先级问题 | 表达式 | 人们可能误以为的结果 | 实际结果 |
.的优先级高于* ->操作符用于消除这 个问题 | *p.f | p所指对象的字段f(*p).f | 对p取f偏移,作为指针,然后进行解除引用操作. *(p.f) |
[]高于* | int *ap[] | ap 是个指向int数组的指针int(*ap)[] | ap是个元素为int 指针的数组 int *(ap[]) |
函数()高于* | int *fp() | fp 是个函数指针,所指函数返回int。int(*fp)() | fp是个函数,返回int* int *(fp()) |
==和!=高于位操作符 | (val &: mask != 0) | (val & mask) != 0 | val& (mask != 0) |
==和!=高于赋值符 | c = getchar() != ECF | (c = getchar0) != EOF | c =(getchar() != EOF) |
算术运算高于移位运算符 | msb << 4 +lsb | (msb << 4)+lsb | msb <<(4 +Isb) |
逗号运算符在所有运算符中优先级最低 | i=1,2 | i=(1,2) | (i=1),2 |
C高级---C语言运算符优先级存在的问题
于 2023-05-09 17:08:13 首次发布