C++运算符优先级
所有(可能)运算符
共分为 18 级。
第 1 级
运算符 | 含义 |
---|---|
:: |
作用域解析运算符 |
第 2 级
运算符 | 含义 |
---|---|
() |
函数调用 |
() |
值构造,即 type(expr) |
[] |
数组下标 |
-> |
间接成员运算符 |
. |
直接成员运算符 |
const_cast |
专用的类型转换 |
dynamic_cast |
专用的类型转换 |
reinterpret_cast |
专用的类型转换 |
static_cast |
专用的类型转换 |
typeid |
类型标识 |
++ |
加 1 运算符,其前接变量 |
-- |
减 1 运算符,其前接变量 |
第 3 级
运算符 | 含义 |
---|---|
! |
逻辑非 |
~ |
按位非 |
+ |
正号 |
- |
负号 |
++ |
加 1 运算符,其后接变量 |
-- |
减 1 运算符,其后接变量 |
& |
地址 |
* |
解除引用(间接值) |
() |
类型转化,即 (type)expr |
sizeof() |
长度,以字节为单位 |
new |
动态分配内存 |
new[] |
动态分配数组 |
delete |
动态释放内存 |
delete[] |
动态释放数组 |
第 4 级
运算符 | 含义 |
---|---|
.* |
成员解除引用 |
->* |
间接成员解除引用 |
第 5 级
运算符 | 含义 |
---|---|
* |
乘 |
/ |
除 |
% |
模 |
第 6 级
运算符 | 含义 |
---|---|
+ |
加 |
- |
减 |
第 7 级
运算符 | 含义 |
---|---|
<< |
左移 |
>> |
右移 |
第 8 级
运算符 | 含义 |
---|---|
< |
小于 |
<= |
小于等于 |
>= |
大于等于 |
> |
大于 |
第 9 级
运算符 | 含义 |
---|---|
== |
等于 |
!= |
不等于 |
第 10 级
运算符 | 含义 |
---|---|
& |
按位与 |
第 11 级
运算符 | 含义 |
---|---|
^ |
按位异或 |
第 12 级
运算符 | 含义 |
---|---|
| |
按位或 |
第 13 级
运算符 | 含义 |
---|---|
&& |
逻辑与 |
第 14 级
运算符 | 含义 |
---|---|
|| |
逻辑或 |
第 15 级
运算符 | 含义 |
---|---|
?: |
三目运算符 |
第 16 级
运算符 | 含义 |
---|---|
= |
赋值 |
*= |
乘并赋值 |
/= |
除并赋值 |
%= |
模并赋值 |
+= |
加并赋值 |
-= |
减并赋值 |
&= |
按位与并赋值 |
^= |
按位异或并赋值 |
|= |
按位或并赋值 |
<<= |
左移并赋值 |
>>= |
右移并赋值 |
第 17 级
运算符 | 含义 |
---|---|
throw |
引发异常 |
第 18 级
运算符 | 含义 |
---|---|
, |
将两个表达式合并成一个 |
重要运算符优先级
- 前接变量
++,--
。 - 逻辑非
!
,按位非~
,正负号,后接变量++,--
。 - 乘,除,模。
- 左移右移。
- 小于(等于),大于(等于)。
- (不)等于。
- 按位与
&
。 - 按位异或
^
。 - 按位或
|
。 - 逻辑与
&&
。 - 逻辑或
||
。 - 三目运算符。
- 各种赋值。
- 合并表达式
,
。