运算符优先级
C 运算符的优先级和结合性
符号 | 操作类型 | 结合性 |
---|---|---|
[ ] ( ) . -> ++ -- (后缀) |
表达式 | 从左到右 |
sizeof & * + - ~ ! ++ -- (前缀) |
一元 | 从右到左 |
typecasts | 一元 | 从右到左 |
* / % |
乘法 | 从左到右 |
+ - |
加法 | 从左到右 |
<< >> |
按位移动 | 从左到右 |
< > <= >= |
关系 | 从左到右 |
== != |
相等 | 从左到右 |
& |
按位“与” | 从左到右 |
^ |
按位“异或” | 从左到右 |
| |
按位“与或” | 从左到右 |
&& |
逻辑“与” | 从左到右 |
|| |
逻辑“或” | 从左到右 |
? : |
条件表达式 | 从右到左 |
= *= /= %= += -= <<= >>= &= ^= |= |
简单和复合赋值 | 从右到左 |
, |
顺序计算 | 从左到右 |
1 运算符按优先级的降序顺序列出。 如果多个运算符出现在同一行或一个组中,则它们具有相同的优先级。
2 所有简单的和复合的赋值运算符都有相同的优先级。
参考:
https://docs.microsoft.com/zh-cn/cpp/c-language/precedence-and-order-of-evaluation?view=msvc-170