首页 > 编程语言 > 详细

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

时间:2014-07-16 21:32:14      阅读:371      评论:0      收藏:0      [点我收藏+]

C语言中的符号重载(C专家编程,2.3误做之过,P38)

 

优先级问题

表达式

人们可能误以为的结果

实际结果

.的优先级高于*

->操作符用于消除这个问题

*p.f

p所指对象的字段f

(*p).f

pf偏移,作为指针,然后进行解除引用操作

*(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

C语言运算符优先级存在的问题,布布扣,bubuko.com

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

原文:http://www.cnblogs.com/cszhj/p/3835927.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!