运算符优先级是C语言重要的组成部分,也是程序bug的常见产生源。需要特别注意的有:
- 赋值在C语言中的优先级是最低的;
- 位运算的优先级高于逻辑运算;
- 关系运算符的优先级低于移位,但是高于位运算;
- 单目运算的优先级最高;
- 同优先级的运算符按照从左向右的顺序解释。
Table 1. C语言运算符优先级
成员括号 | () [] -> . |
单目运算 | ! ~ ++ — – (type) * & sizeof |
算数运算 | * / % + – |
移位运算 | << >> |
关系运算 | > < >= <= |
== != | |
位与运算 | & |
^ | |
| | |
逻辑运算 | && |
|| | |
三目运算 | ?: |
赋值运算 | = += -= |
【版本修订】
v1.1 2015.12.05 增加了表格可读性;增加了注意事项列表。