C 语言运算符优先级

C语言的运算符优先级从上到下递减可表示为:

1. ( ) [ ] -> .                             自左向右结合

2. ! ~ ++ -- - (type) * & sizeof 自右向左结合

3. * / %                                   自左向右结合

4. + -                                      自左向右结合

5. << >>                                 自左向右结合

6. <  <= >  >=                         自左向右结合

7. == !=                                  自左向右结合

8. &                                        自左向右结合

9. ^                                         自左向右结合

10. |                                        自左向右结合

11. &&                                   自左向右结合

12. ||                                      自左向右结合

13. ?:                                    自右向左结合

14. assignmens                    自右向左结合

15. ,                                      自左向右结合

优先级顺序准则

优先级最高的是数组下标、函数调用、结构成员; 

单目运算符优先级高于双目运算符;

在双目运算符中:

    算术运算符高于移位运算符;

    移位运算符高于关系运算符;

    关系运算符高于逻辑运算符;

    逻辑运算符高于赋值运算符。

例:

a.b.c      为       (a.b).c      自左至右结合

*p()        为       *(p(c))      函数调用优先级高于 *

*p++       为      *(p++)      单目自右向左结合,指针先加1再取值

a<b == c<d    为    (a<b )== (c<d) 关系运算符高于逻辑运算符

tax = income>4000 && residency<5 ? 3.5:2.0  为  

                            tax = (((income>4000) && (residency<5)) ? 3.5:2.0)

home =vistor =0 为    home =(vistor =0)  自右向左结合

while (c = get(in) != EOF) 为 while (c = (get(in) != EOF))  != 优先级高于 =

(t=BTYPE(pt1->aty)==STRTY) || t ==UNIONTY 为 

                              (t=((BTYPE(pt1->aty))==STRTY)) || (t ==UNIONTY)

flags & FLAG != 0  为 flags & (FLAG != 0)

r = hi << 4+low      为  r = hi << (4+low)

C缺陷与陷阱 (2.2)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值