CPP和C运算符优先级结合性表
运算符优先级决定了运算符用于值的顺序。C+运算符分为18个优先级组,如表所示。第1组中的运算符的优先级最高,第2组中运算符的优先级次之,依此类推。
一个表达式中,优先级高的运算符先于优先级低的运算符进行运算。优先级相同的运算符按照结合性方向进行运算。
下面是《C++ Primer plus》中的C++运算符优先级表:
C++运算符优先级结合性表
| 优先级 | 运算符 | 结合性 | 含义 |
|---|---|---|---|
| 1 | :: |
- | 作用域解析运算符 |
| 2 | (表达式) |
L-R | 分组 |
| 2 | () |
L-R | 函数调用 |
| 2 | () |
L-R | 值构造,既type(expr) |
| 2 | [] |
L-R | 数组下标 |
| 2 | -> |
L-R | 间接成员运算符 |
| 2 | . |
L-R | 直接成员运算符 |
| 2 | const_cast |
L-R | 专用的类型转换 |
| 2 | dynamic_cast |
L-R | 专用的类型转换 |
| 2 | reinterpret_cast |
L-R | 专用的类型转换 |
| 2 | static_cast |
L-R | 专用的类型转换 |
| 2 | typeid |
L-R | 类型标识(类型信息查询) |
| 2 | ++ |
L-R | 加1运算符,后缀形式 |
| 2 | -- |
L-R | 减1运算符,后缀形式 |
| 3 | ! |
R-L | 逻辑非 |
| 3 | ~ |
R-L | 位非(按位求反) |
| 3 | + |
R-L | 一元加运算符(正号) |
| 3 | - |
R-L | 一元减运算符(负号) |
| 3 | ++ |
R-L | 加1运算符,前缀形式 |
| 3 | -- |
R-L | 减1运算符,前缀形式 |
| 3 | & |
R-L | 地址(取地址运算符) |
| 3 | * |
R-L | 解除引用(间接值) |
| 3 | () |
R-L | 类型转换,既(type)expr |
| 3 | sizeof |
R-L | 长度,以字节为单位 |
| 3 | new |
R-L | 动态分配内存 |
| 3 | new[] |
R-L | 动态分配数组 |
| 3 | delete |
R-L | 动态释放内存 |
| 3 | delete[] |
R-L | 动态释放数组 |
| 4 | .* |
L-R | 成员解除引用 |
| 4 | ->* |
L-R | 间接成员解除引用 |
| 5 | * |
L-R | 乘 |
| 5 | / |
L-R | 除 |
| 5 | % |
L-R | 模(余数) |
| 6 | + |
L-R | 加 |
| 6 | - |
L-R | 减 |
| 7 | << |
L-R | 左移 |
| 7 | >> |
L-R | 右移 |
| 8 | < |
L-R | 小于 |
| 8 | <= |
L-R | 小于或等于 |
| 8 | >= |
L-R | 大于或等于 |
| 8 | > |
L-R | 大于 |
| 9 | == |
L-R | 等于 |
| 9 | != |
L-R | 不等于 |
| 10 | & |
L-R | 按位与 |
| 11 | ^ |
L-R | 按位异或 |
| 12 | | |
L-R | 按位或 |
| 13 | && |
L-R | 逻辑与 |
| 14 | || |
L-R | 逻辑或 |
| 15 | ?: |
R-L | 条件 |
| 16 | = |
R-L | 简单赋值 |
| 16 | *= |
R-L | 乘后赋值 |
| 16 | /= |
R-L | 除后赋值 |
| 16 | %= |
R-L | 模后赋值 |
| 16 | += |
R-L | 加后赋值 |
| 16 | -= |
R-L | 减后赋值 |
| 16 | &= |
R-L | 按位与后赋值 |
| 16 | ^= |
R-L | 按位异或后赋值 |
| 16 | |= |
R-L | 按位或后赋值 |
| 16 | <<= |
R-L | 左移后赋值 |
| 16 | >>= |
R-L | 右移后赋值 |
| 17 | throw |
L-R | 引发异常 |
| 18 | , |
L-R | 将两个表达式合并成一个(逗号) |
C语言的运算符优先级表:
C语言运算符优先级结合性表
| 运算符 | 优先级 | 结合性 |
|---|---|---|
()、[]、.、-> |
1 | 从左到右 |
++、--、+、-、!、~、*、&、(类型)、sizeof |
2 | 从右到左 |
*、/、% |
3 | 从左到右 |
+、- |
4 | 从左到右 |
<<、>> |
5 | 从左到右 |
<、<=、>、>= |
6 | 从左到右 |
==、!= |
7 | 从左到右 |
& |
8 | 从左到右 |
^ |
9 | 从左到右 |
| |
10 | 从左到右 |
&& |
11 | 从左到右 |
|| |
12 | 从左到右 |
?: |
13 | 从右到左 |
=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|= |
14 | 从右到左 |
, |
15 | 从左到右 |

浙公网安备 33010602011771号