优先级 | 运算符 | 含义 | 要求运算对象的个数 | 结合方向 |
1 | () | 圆括号 | 自左至右 | |
[ ] | 下标运算符 | |||
- > | 指向结构体成员运算符 | |||
. | 结构体成员运算符 | |||
2 | ! | 逻辑非运算符 | 1(单目运算符) | 自右向左 |
~ | 按位取反运算符 | |||
++ | 自增运算符 | |||
-- | 自减运算符 | |||
- | 负号运算符 | |||
(类型) | 类型转换运算符 | |||
* | 指针运算符 | |||
& | 取地址运算符 | |||
sizeof | 长度运算符 | |||
3 | * | 乘法运算符 | 2(双目运算符) | 自左至右 |
/ | 除法运算符 | |||
% | 求余运算符 | |||
4 | + | 加法运算符 | 2(双目运算符) | 自左至右 |
- | 减法运算符 | |||
5 | << | 左移运算符 | 2(双目运算符) | 自左至右 |
>> | 右移运算符 | |||
6 | <、<=、>、>= | 关系运算符 | 2(双目运算符) | 自左至右 |
7 | == | 等于运算符 | 2(双目运算符) | 自左至右 |
!= | 不等于运算符 | |||
8 | & | 按位与运算符 | 2(双目运算符) | 自左至右 |
9 | ^ | 按位异或运算符 | 2(双目运算符) | 自左至右 |
10 | | | 按位或运算符 | 2(双目运算符) | 自左至右 |
11 | && | 逻辑与运算符 | 2(双目运算符) | 自左至右 |
12 | || | 逻辑或运算符 | 2(双目运算符) | 自左至右 |
13 | ? : | 条件运算符 | 3(三目运算符) | 自右向左 |
14 | =、+=、-=、*=、/=、%=、>>=、<<=、&=、^= | 赋值运算符 | 2(双目运算符) | 自右向左 |
15 | , | 逗号运算符 | 自左至右 |
说明:(1)同一优先级的运算符,运算次序由结合方向决定;
(2)不同的运算符要求有不同的运算对象个数,即几目;
(3)按优先级由高到低排序的话,依次为:初等运算符——单目运算符——算术运算符(先乘除后加减)——关系运算符——逻辑运算符(不包括!)——条件运算符——赋值运算符——逗号运算符;