首页 > 代码库 > C语言运算符优先级存在的问题
C语言运算符优先级存在的问题
C语言中的符号重载(C专家编程,2.3误做之过,P38)
优先级问题 | 表达式 | 人们可能误以为的结果 | 实际结果 |
.的优先级高于* ->操作符用于消除这个问题 | *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()!=EOF | (c=getchar())!=0 | c=(getchar()!=EOF) |
算术运算高于移位运算符 | msb<<4+lsb | (msb<<4)+lsb | msb<<(4+lsb) |
逗号运算符在所有运算符中优先级最低 | i=1,2 | i=(1,2) | (i=1),2 |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。