细说C语言优先级

 0. 为什么要掌握优先级

  想想这两个问题:
   a. 读别人的代码,遇到优先级问题看不懂,怎么办?
   b. 一堆的括号,美观吗?
 本想贴一张画来装饰墙壁,却用了一堆纸来固定! 
 有人说代码写多了,自然就会了。这个是很宽泛的说法。看你写的代码的水准,有些东西可能你一直
 都接触不到,何谈熟练。有些东西一定要梳理,总结。

1. 优先级
1.1 优先级图表
c
   优先级最高者不是真正意义上的运算符,包括:数组下标,函数调用,结构体成员选择符。
   单目运算符的优先级次之。(! ~ ++ -- - (type) * & sizeof)
   然后是双目运算符。双目运算符里, 算数运算符(* / % + -)优先级最高, 移位(<< >>)次之, 关系
  运算符(< <= > >= != ==)再次之, 接着是位运算符(& ^ | ),逻辑运算符(&& ||) 条件运算符(?: 三目),
  赋值运算符(= ...)。
  任何一个逻辑运算符的优先级低于任何一个关系运算符。
  移位运算符的优先级比算数运算符要低,但是比关系运算符要高。

1.2 运算符实例
        a. while (c = getc(in) != EOF)
                putc(c, out)
    循环的意思是复制一个文件到另一个文件。但是由于!=的优先级比赋值运算符的优先级高,所以c
   被赋予了getc()的返回值与EOF比较后的布尔值,结果向out中写入了一堆1.

1.3 优先级顺口溜

        醋坛酸味灌
        味落跳福豆
        共44个运算符

        醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员
        坛-单目,9个: ! ~ ++ -- -负号 (类型) *指针 &取地址 sizeof长度
        酸-算术,5个: * / % + -减
        味-位移,2个: << >>
        灌-关系,6个: < <= > >= == 等于 != 不等于
        味-位逻,3个: & 按位与 ^ 按位异或 | 按位或
        落-逻辑,2个: && 逻辑与 || 逻辑或
        跳-条件,1个,三目: ? :
        福-赋值,11个: = += -= *= /= %= >>= <<= &= ^= |=
        豆-逗号,1个: ,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值