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