C操作符的优先级和关联规则

C操作符的优先级和关联规则

操作符关联规则
关联操作符 ()  []  ->  .从左到右
一元操作符  !  –  ++  --  +  -  (type)  *  &  sizeof从右到左
乘法和除法  *  /  %从左到右
加法和减法  +  -从左到右
移位操作符  <<  >>从左到右
关系操作符  <  <=  >  >=从左到右
相等比较  ==  !=从左到右
位操作符  &从左到右
位操作符  ^从左到右
位操作符  |从左到右
逻辑操作符  &&从左到右
逻辑操作符  ||从左到右
条件操作符  ?:从右到左
赋值操作符  =  +=  -=  *=  /=从右到左
逗号  ,从左到右

 

1.优先级决定操作符与操作数的绑定顺序

2.操作符是按照优先级从高到低顺序与操作数绑定的

3.在确定两个操作符的相对优先级时,首先从这个表格中找到这两个操作符,表中排在上面的比下面的优先级高;当这两个操作符出现在同一行中时,需要根据“关联规则“来决定它们的优先级;如果是”从左到右“,则左边的操作符有更高的优先级;如果是”从右到左“,则右边的操作符有更高的优先级

4.尽量避免优先级不清的表达式写法,用括号明确区分表达式的计算过程

 

例:

(1) *p++的计算顺序为(*(p++)):因为*和++属于同一行,所以看其关联规则为”从右到左“,因此操作数先与++绑定,再与*绑定

(2) x || !y && z的计算顺序为(x || ((!y) && z)):因为操作符的优先级顺序为! && ||,因此首先!与y绑定,其次&&与(!y)和z绑定,最后||与x和 ((!y) && z)绑定

(3) x | y & z的计算顺序为(x | (y & z))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值