C++ 语言包括所有 C 运算符并添加多个新的运算符。 运算符指定对下列项之一执行计算:
-
一个操作数(一元运算符)
-
两个操作数(二元运算符)
-
三个操作数(三元运算符)
运算符遵循严格的优先级,该优先级定义了包含这些运算符的表达式的计算顺序。 运算符与其左侧或右侧的表达式关联;这称为“关联性”。下表显示 C++ 运算符的优先级和关联性(从最高优先级到最低优先级)。 表的同一段中的运算符具有相同的优先级,这些运算符在表达式中按给定顺序进行计算(除非括号明确强制执行计算)。
运算符 | 名称或含义 | 结合性 |
---|---|---|
:: | 范围解析 | 无 |
|
|
|
. | 成员选定内容(对象) | 从左到右 |
–> | 成员选定内容(指针) | 从左到右 |
[ ] | 数组下标 | 从左到右 |
( ) | 函数调用成员初始化 | 从左到右 |
++ | 后缀递增 | 从左到右 |
–– | 后缀递减 | 从左到右 |
typeid( ) | 类型名称 | 从左到右 |
const_cast | 类型转换(转换) | 从左到右 |
dynamic_cast | 类型转换(转换) | 从左到右 |
reinterpret_cast | 类型转换(转换) | 从左到右 |
static_cast | 类型转换(转换) | 从左到右 |
|
|
|
sizeof | 对象或类型的大小 | 从右到左 |
++ | 前缀递增 | 从右到左 |
–– | 前缀递减 | 从右到左 |
~ | 二进制反码 | 从右到左 |
! | 逻辑“非” | 从右到左 |
– | 一元负 | 从右到左 |
+ | 一元加 | 从右到左 |
& | address-of | 从右到左 |
* | 间接寻址 | 从右到左 |
new | 创建对象 | 从右到左 |
delete | 销毁对象 | 从右到左 |
( ) | Cast | 从右到左 |
|
|
|
.* | 指向成员的指针(对象) | 从左到右 |
–>* | 指向成员的指针(指针) | 从左到右 |
|
|
|
* | 乘法 | 从左到右 |
/ | 除法 | 从左到右 |
% | 取模 | 从左到右 |
|
|
|
+ | 添加 | 从左到右 |
– | 减法 | 从左到右 |
|
|
|
<< | 左移 | 从左到右 |
>> | 右移 | 从左到右 |
|
|
|
< | 小于 | 从左到右 |
> | 大于 | 从左到右 |
<= | 小于或等于 | 从左到右 |
>= | 大于或等于 | 从左到右 |
|
|
|
== | 相等 | 从左到右 |
!= | 不相等 | 从左到右 |
|
|
|
& | 按位“与” | 从左到右 |
|
|
|
^ | 按位“异或” | 从左到右 |
|
|
|
| | 按位“与或” | 从左到右 |
|
|
|
&& | 逻辑“与” | 从左到右 |
|
|
|
|| | 逻辑“或” | 从左到右 |
|
|
|
expr1 ? expr2 : expr3 | 条件运算 | 从右到左 |
|
|
|
= | 赋值 | 从右到左 |
*= | 乘法赋值 | 从右到左 |
/= | 除法赋值 | 从右到左 |
%= | 取模赋值 | 从右到左 |
+= | 加法赋值 | 从右到左 |
–= | 减法赋值 | 从右到左 |
<<= | 左移赋值 | 从右到左 |
>>= | 右移赋值 | 从右到左 |
&= | 按位“与”赋值 | 从右到左 |
|= | 按位“与或”赋值 | 从右到左 |
^= | 按位“异或”赋值 | 从右到左 |
|
|
|
throw expr | 引发表达式 | 从右到左 |
|
|
|
, | 逗号 | 从左到右 |