原文: 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 |
右到左 |
左右移位 |
>> << |
算术运算符
描述 |
运算符 |
关联性 |
乘法、除法、模数运算符 |
* / % |
左到右 |
加法、减法 |
+ - |
左到右 |
关系运算符
描述 |
运算符 |
关联性 |
小于 |
< |
左到右 |
大于 |
> |
左到右 |
小于等于 |
<= |
左到右 |
大于等于 |
>= |
左到右 |
等于 |
== |
左到右 |
不等于 |
!= |
左到右 |
逻辑运算符
描述 |
运算符 |
关联性 |
与 |
&& |
左到右 |
或 |
` |
|
` |
左到右 |
非 |
! |
右到左 |
按位运算符
描述 |
运算符 |
关联性 |
与 |
& |
左到右 |
异或 |
^ |
左到右 |
或 |
` |
` |
左到右 |
赋值运算符
描述 |
运算符 |
关联性 |
|
= |
右到左 |
|
*= |
右到左 |
|
/= |
右到左 |
|
%= |
右到左 |
|
+= |
右到左 |
|
-= |
右到左 |
|
& = |
右到左 |
|
^= |
右到左 |
|
` |
=` |
右到左 |
|
<<= |
右到左 |
|
>>= |
右到左 |
其他运算符
描述 |
运算符 |
关联性 |
逗号 |
, |
右到左 |
条件运算符 |
?: |
右到左 |