C++ 内置运算符、优先级和关联性

C++ 语言包括所有 C 运算符并添加多个新的运算符。 运算符指定对一个或多个操作数执行的计算。

优先级和结合性

运算符优先级指定了包含多个运算符的表达式中的运算顺序。 运算符关联性指定了在包含多个具有相同优先级的运算符的表达式中,操作数是与其左侧还是右侧的操作数组合。

替代拼写

C++ 为某些运算符指定了替代拼写。 在 C 中,替代拼写在 <iso646.h> 标头中作为宏提供。 在 C++ 中,这些替代项是关键字,<iso646.h> 或 C++ 等效的 <ciso646> 已弃用。 在 Microsoft C++ 中,需要 /permissive-/Za 编译器选项才能启用替代拼写。

C++ 运算符的优先级和关联性表

下表显示 C++ 运算符的优先级和关联性(从最高优先级到最低优先级)。 优先级别编号相同的运算符具有等同的优先级别,除非由括号显式施加另一种关系。

运算符说明 运算符 替代项
第 1 组优先级,无关联性
范围解析 ::
第 2 组优先级,从左到右关联
成员选择(对象或指针) .->
数组下标 []
函数调用 ()
后缀递增 ++
后缀递减 --
类型名称 typeid
常量类型转换 const_cast
动态类型转换 dynamic_cast
重新解释的类型转换 reinterpret_cast
静态类型转换 static_cast
第 3 组优先级,从右到左关联
对象或类型的大小 sizeof
前缀递增 ++
前缀递减 --
二进制反码 ~ compl
逻辑“非” ! not
一元求反 -
一元加 +
Address-of &
间接寻址 *
创建对象 new
销毁对象 delete
强制转换 ()
第 4 组优先级,从左到右关联
指向成员的指针(对象或指针) .*->*
第 5 组优先级,从左到右关联
乘法 *
除法 /
取模 %
第 6 组优先级,从左到右关联
加法 +
减法 -
第 7 组优先级,从左到右关联
左移 <<
右移 >>
第 8 组优先级,从左到右关联
小于 <
大于 >
小于或等于 <=
大于或等于 >=
第 9 组优先级,从左到右关联
等式 ==
不相等 != not_eq
第 10 组优先级,从左到右关联
按位“与” & bitand
第 11 组优先级,从左到右关联
按位“异或” ^ xor
第 12 组优先级,从左到右关联
按位“与或” | bitor
第 13 组优先级,从左到右关联
逻辑与 && and
第 14 组优先级,从左到右关联
逻辑或 || or
第 15 组优先级,从右到左关联
条件 ? :
转让 =
乘法赋值 *=
除法赋值 /=
取模赋值 %=
加法赋值 +=
减法赋值 -=
左移赋值 <<=
右移赋值 >>=
按位“与”赋值 &= and_eq
按位“与或”赋值 |= or_eq
按位“异或”赋值 ^= xor_eq
引发表达式 throw
第 16 组优先级,从左到右关联
Comma

另请参阅

运算符重载