优先级:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符。逻辑运算符中“逻辑非 !”除外。
| 优先级 | 运算符 | 描述 | 结合性 |
|---|---|---|---|
| 1 | ++ -- | 后缀自增与自减 | 从左到右 |
| () | 函数调用 | ||
| [] | 数组下标 | ||
| . | 结构体与联合体成员访问 | ||
| -> | 结构体与联合体成员通过指针访问 | ||
| (type){list} | 复合字面量(C99) | ||
| 2 | ++ -- | 前缀自增与自减 | 从右到左 |
| + - | (一元)正与负,与加减不同 | ||
| ! ~ | 逻辑非与逐位非 | ||
| (type) | 转型 | ||
| * | 间接(解引用) | ||
| & | 取址 | ||
| sizeof | 取变量大小 | ||
| _Alignof | 对齐要求(C11) | ||
| 3 | * / % | 乘法、除法及余数 | 从左到右 |
| 4 | + - | 加法及减法 | |
| 5 | << >> | 逐位左移及右移 | |
| 6 | < <= | 分别为 < 与 ≤ 的关系运算符 | |
| > >= | 分别为 > 与 ≥ 的关系运算符 | ||
| 7 | == != | 分别为 = 与 ≠ 关系 | |
| 8 | & | 逐位与、按位与 | |
| 9 | ^ | 逐位异或(排除或) | |
| 10 | | | 逐位或(包含或) | |
| 11 | && | 逻辑与 | |
| 12 | | | | 逻辑或 | |
| 13 | ?: | 三元条件 | 从右到左 |
| 14[注 4] | = | 简单赋值 | |
| += -= | 以和及差赋值 | ||
| *= /= %= | 以积、商及余数赋值 | ||
| <<= >>= | 以逐位左移及右移赋值 | ||
| &= ^= | = | 以逐位与、异或及或赋值 | ||
| 15 | , | 逗号 | 从左到右 |
单目运算符:结合性都是从右往左,优先级较高
双目运算符中只有赋值运算符的结合方向是从右往左
逗号运算符的优先级最低
拥有相同优先级的运算符以其结合性的方向绑定到其参数。 例如,表达式 a = b = c 被分析为 a = (b = c) 而非 (a = b) = c ,因为“=”是从右到左的结合性。
最后一次更新于2022-11-04




0 条评论