运算符优先级

C 运算符的优先级和结合性

符号 操作类型 结合性
[ ] ( ) . -> ++ --(后缀) 表达式 从左到右
sizeof & * + - ~ ! ++ --(前缀) 一元 从右到左
typecasts 一元 从右到左
* / % 乘法 从左到右
+ - 加法 从左到右
<< >> 按位移动 从左到右
< > <= >= 关系 从左到右
== != 相等 从左到右
& 按位“与” 从左到右
^ 按位“异或” 从左到右
| 按位“与或” 从左到右
&& 逻辑“与” 从左到右
|| 逻辑“或” 从左到右
? : 条件表达式 从右到左
= *= /= %= += -= <<= >>= &= ^= |= 简单和复合赋值 从右到左
, 顺序计算 从左到右

1 运算符按优先级的降序顺序列出。 如果多个运算符出现在同一行或一个组中,则它们具有相同的优先级。

2 所有简单的和复合的赋值运算符都有相同的优先级。

参考:

https://docs.microsoft.com/zh-cn/cpp/c-language/precedence-and-order-of-evaluation?view=msvc-170