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