参考图表
运算符优先级表
| 运算符 | 描述 |
|---|---|
| 优先级第1组 | |
:: C++ | 作用域解析运算符 |
| 优先级第2组 | 结合性:L-R |
(表达式) | 分组 |
() | 函数调用 |
() C++ | 值构造,即type(expr) |
[] | 数组下标 |
-> | 间接成员运算符 |
. | 直接成员运算符 |
const_cast C++ | 专用的类型转换 |
dynamic_cast C++ | 专用的类型转换 |
reinterpret_cast C++ | 专用的类型转换 |
static_cast C++ | 专用的类型转换 |
typeid C++ | 类型标识 |
++ | 加1运算符,后缀 |
-- | 减1运算符,后缀 |
| 优先级第3组(均为一元运算符) | 结合性:R-L |
! | 逻辑非 |
~ | 位非 |
+ | 一元加号(正号) |
- | 一元减号(负号) |
++ | 加1运算符,前缀 |
-- | 减1运算符,前缀 |
& | 地址 |
* | 解除引用(间接值) |
() | 类型转换,即(type)expr |
sizeof | 长度,以字节为单位,类型是size_t |
new C++ | 动态分配内存 |
new [] C++ | 动态分配数组 |
delete C++ | 动态释放内存 |
delete [] C++ | 动态释放数组 |
| 优先级第4组 | 结合性:L-R |
.* | 成员解除引用 |
->* | 间接成员解除引用 |
| 优先级第5组(均为二元运算符) | 结合性:L-R |
* | 乘 |
/ | 除 |
% | 模(余数) |
| 优先级第6组(均为二元运算符) | 结合性:L-R |
+ | 加 |
- | 减 |
| 优先级第7组 | 结合性:L-R |
<< | 左移 |
>> | 右移 |
| 优先级第8组 | 结合性:L-R |
< | 小于 |
<= | 小于或等于 |
>= | 大于或等于 |
> | 大于 |
| 优先级第9组 | 结合性:L-R |
== | 等于 |
!= | 不等于 |
| 优先级第10组(二元运算符) | 结合性:L-R |
& | 按位AND |
| 优先级第11组 | 结合性:L-R |
^ | 按位XOR(异或) |
| 优先级第12组 | 结合性:L-R |
| | 按位OR |
| 优先级第13组 | 结合性:L-R |
&& | 逻辑AND |
| 优先级第14组 | 结合性:L-R |
|| | 逻辑OR |
| 优先级第15组 | 结合性:R-L |
:? | 条件(唯一的三元运算符) |
| 优先级第16组 | 结合性:R-L |
= | 简单赋值 |
*= | 乘并赋值 |
/= | 除并赋值 |
%= | 求模并赋值 |
+= | 加并赋值 |
-= | 减并赋值 |
&= | 按位AND并赋值 |
^= | 按位XOR并赋值 |
|= | 按位OR并赋值 |
<<= | 左移并赋值 |
>>= | 右移并赋值 |
| 优先级第17组 | 结合性:L-R |
throw C++ | 引发异常 |
| 优先级第18组 | 结合性:L-R |
, | 将两个表达式合并成一个 |