优先级与结合性

优先级:是表示运算符的优先程度,在没有括号的时候先算那个运算符。

结合性:在同等优先级的几个运算符的运算中,是从左到右运算还是从右到左运算。

在标准C语言的文档里,对操作符的结合性并没有作出非常清楚的解释。一个满分的回答是:它是仲裁者,在几个操作符具有相同的优先级时决定先执行哪一个。

1.       C中有11级优先级;每一级优先级可能有多个运算符,但它们的结合性一样。结合性只有在同一优先级的运算中才有意义。

2.       这11级优先级分别为:(从高到低)




 
 

1)  圆括号()   方括号[]    箭头 ->    圆点 .                                           结合性:自左至右。


       2)  单目运算符: 逻辑非!  按位反~   自增++,

        自减--   负-   正+   类型转换   指向*      取地址&    sizeof                   结合性:自右至左


3)  算术:乘,除,取余,                                                                       结合性:自左至右


4)  算术:加,减,                                                                                 结合性:自左至右


5)  位运算:<<   >>                                                                                结合性:自左至右


6)  关系运算:>, >=,<,<=,= =,!=                                                             结合性:自左至右


7)  按位:&,^, | ,                                                                                     结合性:自左至右


8)  逻辑:&&,||,                                                                                      结合性:自左至右


9)  条件(三目运算符):?:,                                                           结合性:自右至左


10)  赋值:=,+=,-=, *=,/=,>>=,<<=,&=,|=,^=,                            结合性:自右至左


11)  顺序:逗号,                                                                                    结合性:自左至右


3.       总体来讲:

1)  单目运算符优先级高于双目及三目运算符。

2)  顺序运算的优先级最低

3)  赋值运算符的优先级略高于顺序运算符

4)  逗号运算符的值是最右边操作数的值,逗号运算符结合性从左至右,因此又称为顺序求值运算符

5)  先函数,后运算。

6)  先算术,再位移,后关系,再按位逻辑,后逻辑,后赋值,最后顺序

7)  同级运算时,要看结合性。

8)  x = f() + g() * h();乘法先于加法执行,但是g()和h()的调用可能以任何顺序出现。同样,f()可能在乘法之前调用,也可能在乘法之后调用

9)  优先级相同的操作符,它们的结合性也相同

10)  函数调用中,各个参数的计算顺序是不确定的

11)  &&和||等,其操作数的计算顺序是确定的,它们使用短路原则(短路原则就是说如果在&&中一个为非,则整个结果为0,后面的运算就可以忽略不计了)


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值