【C语言】运算符优先级列表(超详细)

C语言学习

友情链接:C语言专栏


前言:每个C程序员都经历过的痛

“*p++到底先算哪个?”
“为什么a & b == c和我想的不一样?”
“每次写复杂表达式都要试半天…”

相信每个C程序员都曾为运算符优先级抓狂过!网上的资料要么不全,要么解释不清,每次要用的时候死活找不到想要的。经过无数次踩坑和整理,我终于总结出了这份最全最实用的C语言运算符优先级指南,分享给同样被这个问题困扰的你!


C语言运算符优先级完整列表

优先级运算符描述结合性示例
1() [] -> . :: ++ --函数调用/数组下标/成员访问/后置自增自减左到右arr[2], obj.member, i++
2++ -- + - ! ~ (type) * & sizeof前置自增自减/正负号/逻辑非/按位取反/强制类型转换/解引用/取地址/大小计算右到左++i, -num, !flag, *ptr
3* / %乘除取模左到右a * b, 5 % 2
4+ -加减左到右x + y - z
5<< >>位移左到右n << 2, val >> 1
6< <= > >=关系比较左到右a > b, x <= y
7== !=相等比较左到右x == y, a != 0
8&按位与左到右flags & MASK
9^按位异或左到右a ^ b
10|按位或左到右opt1 | opt2
11&&逻辑与左到右cond1 && cond2
12||逻辑或左到右flag1 || flag2
13?:条件运算符右到左x > 0 ? x : -x
14= += -= *= /= %= <<= >>= &= ^= |=赋值运算符右到左a = b, x += 5
15,逗号运算符左到右i++, j--

关键说明

  1. 优先级规则

    • 数字越小优先级越高
    • 同优先级按结合性计算
  2. 常见易错点

    *p++;    // 等价于 *(p++)
    a & b == c;  // 等价于 a & (b == c)
    

附录

上文链接

《数组全解析:从内存布局到高效操作》

下文链接

《操作符详解:从基础到高阶,一篇搞定!》

专栏

C语言专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值