表显示了C中所有运算符的优先顺序,从顶部到最低的底部。
优先级 | 操作符 | 描述 |
---|---|---|
1 | () | 括号表达式 |
1 | [] | 数组下标 |
1 | . | 成员选择(对象) |
1 | -> | 成员选择(指针) |
1 | ++ -- | 后缀自增 / 后缀自减 |
2 | + - | 一元 + 和 - |
2 | ++ -- | 前缀自增 / 前缀自减 |
2 | ! ~ | 逻辑非 / 按位取反 |
2 | * | 取指针指向的值 |
2 | & | 取地址运算符 |
2 | sizeof | 长度运算符 |
2 | (type) | 强制类型转换 |
3 | * / % | 乘法 / 除法 / 取余 |
4 | + - | 加号 / 减号 |
5 | << >> | 位左移 / 位右移 |
6 | < <= | 小于 / 小于等于 |
6 | > >= | 大于 / 大于等于 |
7 | == != | 等于 / 不等于 |
8 | & | 按位与 |
9 | ^ | 按位异或 |
10 | | | 按位或 |
11 | && | 逻辑与 |
12 | || | 逻辑或 |
13 | ?: | 条件运算符 |
14 | = | 赋值 |
14 | += −= | 相加后赋值 / 相减后赋值 |
14 | /= *= | 相除后赋值 / 相乘后赋值 |
14 | %= | 取模后赋值 |
14 | <<= >>= | 位左移赋值 / 位右移赋值 |
14 | &= |= | 按位与后赋值 / 按位或后赋值 |
14 | ^= | 按位异或后赋值 |
15 | , | 逗号运算符 |
以下代码显示了运算符优先级的使用。
#include <stdio.h>
int main(void) {
int top, score;
top = score = -(3 + 5) * 6 + (4 + 3 * (2 + 3));
printf("top = %d, score = %d\n", top, score);
return 0;
}
上面的代码生成以下结果。