C语言运算符优先级存在的问题

[复制链接]

150

主题

446

帖子

1968

积分

审核员

Rank: 9Rank: 9Rank: 9

积分
1968
楼主
查看: 5860回复: 2 发表于 2020-6-9 08:47:28   只看该作者
本帖最后由 secret 于 2020-6-9 09:37 编辑

这次我将分享 C 语言运算符优先级存在,希望同学们能够有所学习,如需要对照可自行截图或选择收藏查看

优先级问题
表达式
人们可能误以为的结果
实际结果
".的优先级高于*
->操作符用于消除这个问题"        
*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)+ls        msb<<(4+lsb)         
逗号运算符在所有运算符中优先级最低        i=1,2        i=(1,2)        (i=1),2         



45

主题

179

帖子

455

积分

二氧化硅

Rank: 2

积分
455
沙发
发表于 2020-6-9 14:12:30   只看该作者
谢谢分享

20

主题

124

帖子

290

积分

二氧化硅

Rank: 2

积分
290
板凳
发表于 2020-6-9 14:13:50   只看该作者
谢谢分享
快速回复 返回顶部 返回列表