c语言优先级做个总结表,从上到下优先级递减
运算符 | 结合性 |
()[] -> . | 自左向右 |
! ~ ++ -- - (type) * & sizeof | 自右向左 |
* / % | 自左向右 |
+ - | 自左向右 |
<< >> | 自左向右 |
< <= > >= | 自左向右 |
== != | 自左向右 |
& | 自左向右 |
^ | 自左向右 |
| | 自左向右 |
&& | 自左向右 |
|| | 自左向右 |
?: | 自右向左 |
assignments | 自右向左 |
, | 自左向右 |
优先级最高的并不是真正意义上的运算符,包括:数组下标,函数调用操作符,各结构成员选择操作符,自左向右结合
单目运算符优先级低于上述运算符,自右向左结合
双目运算符低于单目运算符,记住以下两点:
- 任何一个逻辑运算符优先级低于任何一个关系运算符
- 移位运算符比逻辑运算符高,但比算术运算符低
三目运算符低于双目运算符
赋值运算符低于三目运算符
逗号运算符最低