C语言中的操作符优先级和求值顺序

1.操作优先级:

()  []  ->  .  L-R

!  ~  ++  --  -  (type)  *  &  sizeof  R-L

*  /  %  L-R

+  -  L-R

>>  <<  L-R

<  >  <=  >=  L-R

==  !=  L-R

&  L-R

^  L-R

|  L-R

&&  L-R

||  L-R

?:  R-L

assignments  R-L

,  L-R

 

2.c语言中,只有四个运算符(&&、||、?:、,)存在规定的求值顺序。&&和||首先对左侧操作数进行求值,只有在需要时才对右侧的操作数进行求值;在a?b:c中,操作数a首先被求值,根据a的值然后再求b或c的值;而在逗号运算符中,首先对左侧操作数进行求值,然后该值被“丢弃”,再对右侧的操作数求值。分隔函数参数的逗号并非逗号运算符,g(x,y)的,并不是逗号运算符,而g((x,y))的则是。C语言中其他运算符对操作数的求值顺序是未定义的。特别的,赋值运算符并不保障任何求值顺序

3.把具有副作用的操作数表达式在单独的语句执行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值