本文汇总了 C++11 中的运算符的含义、优先级分组及其结合性。
如果两个运算符用于同一个操作数,首先应用优先极高的。如果两个运算符优先级相同,按结合性规则决定应用那个运算符。同一组中的运算符优先级和结合性相同,无论先左后右(L-R),还是先右后左(R-L)。
运算符 | 含义 | 优先级分组 | 结合性 |
---|---|---|---|
:: | 作用域解析 | 1 | L-R |
(表达式) | 分组运算 | 2 | L-R |
() | 函数调用 | ||
() | 值构造,如 int('c') | ||
[] | 数组下标 | ||
-> | 间接成员访问 | ||
. | 直接成员访问 | ||
const_cast | 类型转换 | ||
dynamic_cast | 类型转换 | ||
reinterpret_cast | 类型转换 | ||
static_cast | 类型转换 | ||
typeid | 类型标识 | ||
++ | 后缀自加,如 i++ | ||
-- | 后缀自减,如 i-- | ||
! | 逻辑非 | 3 | R-L |
~ | 位非 | ||
+ | 正号 | ||
- | 负号 | ||
++ | 前缀自加,如 ++i | ||
-- | 前缀自减,如 --i | ||
& | 地址 | ||
* | 解引用 | ||
() | 类型转换,如 (int)'c' | ||
sizeof | 字节长度 | ||
new | 动态分配内存 | ||
new [] | 动态分配数组 | ||
delete | 动态释放内存 | ||
delete [] | 动态释放数组 | ||
.* | 直接成员解引用 | 4 | L-R |
->* | 间接成员解引用 | ||
* | 乘 | 5 | L-R |
/ | 除 | ||
% | 模 | ||
+ | 加 | 6 | L-R |
- | 减 | ||
<< | 左移 | 7 | L-R |
>> | 右移 | ||
< | 小于 | 8 | 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 |
*= | 乘并赋值 | ||
/= | 除并赋值 | ||
%= | 模并赋值 | ||
+= | 加并赋值 | ||
-= | 减并赋值 | ||
&= | 按位与并赋值 | ||
^= | 按位异或并赋值 | ||
|= | 按位或并赋值 | ||
<<= | 左移并赋值 | ||
>>= | 右移并赋值 | ||
throw | 引发异常 | 17 | L-R |
, | 合并两个表达式 | 18 | L-R |