原文: https://beginnersbook.com/2014/01/c-operator-precedence-table/
在本指南中,我们将学习 C 编程中的运算符优先级和关联性。
C 中的运算符优先级
运算符优先级确定当表达式具有多个运算符时,首先计算哪个运算符。例如,100-2 * 30将产生 40,因为它被求值为100 - (2 * 30)而不是(100-2)* 30。原因是乘法*的优先级高于减法(-)。
C 中的关联性
当表达式中存在两个或多个具有相同优先级的运算符时,使用关联性。例如,乘法和除法算术运算符具有相同的优先级,假设我们有一个表达式5 * 2/10,这个表达式将被计算为(5 * 2)/ 10,因为这些运算符的关联性是从左到右。类似地,20/2 * 5将被计算为(20 * 2)/ 5。
C 编程中的运算符优先级和关联表
| 描述 |
运算符 |
关联性 |
| 函数表达式 |
() |
左到右 |
| 数组表达式 |
[] |
左到右 |
| 结构运算符 |
-> |
左到右 |
| 一元减 |
- |
右到左 |
| 递增递减 |
-- ++ |
右到左 |
| 一元补 |
~ |
右到左 |
| 指针运算符 |
& * |
右到左 |
| 输入 |
(数据类型) |
右到左 |
| 尺寸运算符 |
sizeof |
右到左 |
| 左右移位 |
>> << |
算术运算符
| 描述 |
运算符 |
关联性 |
| 乘法、除法、模数运算符 |
* / % |
左到右 |
| 加法、减法 |
+ - |
左到右 |
关系运算符
| 描述 |
运算符 |
关联性 |
| 小于 |
< |
左到右 |
| 大于 |
> |
左到右 |
| 小于等于 |
<= |
左到右 |
| 大于等于 |
>= |
左到右 |
| 等于 |
== |
左到右 |
| 不等于 |
!= |
左到右 |
逻辑运算符
| 描述 |
运算符 |
关联性 |
| 与 |
&& |
左到右 |
| 或 |
` |
|
` |
左到右 |
| 非 |
! |
右到左 |
按位运算符
| 描述 |
运算符 |
关联性 |
| 与 |
& |
左到右 |
| 异或 |
^ |
左到右 |
| 或 |
` |
` |
左到右 |
赋值运算符
| 描述 |
运算符 |
关联性 |
|
= |
右到左 |
|
*= |
右到左 |
|
/= |
右到左 |
|
%= |
右到左 |
|
+= |
右到左 |
|
-= |
右到左 |
|
& = |
右到左 |
|
^= |
右到左 |
|
` |
=` |
右到左 |
|
<<= |
右到左 |
|
>>= |
右到左 |
其他运算符
| 描述 |
运算符 |
关联性 |
| 逗号 |
, |
右到左 |
| 条件运算符 |
?: |
右到左 |