运算符优先级和结合方向

结合方向优先级运算符名称说明
\rarr
从左向右
1::作用域解析运算符说明
2a++后缀自增运算符说明
a--后缀自减运算符说明
T()函数风格转型运算符说明
T{}列表风格转型运算符说明
a()函数调用运算符说明
a[]下标运算符说明
.成员运算符说明
->指针成员运算符说明
\larr
从右向左
3++a前缀自增运算符说明
++a前缀自减运算符说明
+a一元加运算符说明
-a一元减运算符说明
!逻辑非运算符说明
~取反运算符说明
(T)C 风格转型运算符说明
*a解地址运算符说明
&a取地址运算符说明
sizeofsizeof 运算符说明
co_awaitawait 运算符敬请期待
newnew 运算符说明
new T[]new[] 运算符说明
deletedelete 运算符说明
delete[]delete[] 运算符说明
\rarr
从左向右
4.*成员指针运算符说明
->*指针成员指针运算符说明
5a*b乘法运算符说明
/除法运算符说明
%模运算符说明
6a+b加法运算符说明
a-b减法运算符说明
7<<左移运算符说明
>>右移运算符说明
8<=>三路比较运算符说明
9<小于运算符说明
<=小于等于运算符说明
>大于运算符说明
>=大于等于运算符说明
10==等于运算符说明
!=不等于运算符说明
11a&b逐位与运算符说明
12^逐位异或运算符说明
13|逐位或运算符说明
14&&逻辑与运算符说明
15||逻辑或运算符说明
\larr
从右向左
16a?b:c条件运算符说明
throwthrow 运算符敬请期待
co_yieldyield 运算符敬请期待
=简单赋值运算符说明
+=加法复合赋值运算符说明
-=减法复合赋值运算符说明
*=乘法复合赋值运算符说明
/=出发复合赋值运算符说明
%=模复合赋值运算符说明
<<=左移复合赋值运算符说明
>>=右移复合赋值运算符说明
&=逐位与复合赋值运算符说明
^=逐位异或复合赋值运算符说明
|=逐位或复合赋值运算符说明
\rarr
从左向右
17,逗号运算符说明
以下运算符的操作数均因被小括号括起而不存在歧义性,故不存在优先级或结合方向。
const_cast<T>(a)const_cast 运算符说明
static_cast<T>(a)static_cast 运算符说明
dynamic_cast<T>(a)dynamic_cast 运算符说明
reinterpret_cast<T>(a)reinterpret_cast 运算符说明
typeid(a)typeid 运算符说明
sizeof...(a)sizeof... 运算符敬请期待
noexcept(a)noexcept 运算符敬请期待
alignof(a)alignof 运算符获取对象或类型的对其要求

  1. 条件表达式的 ?: 之间如同视有小括号,不考虑优先级;
  2. sizeof 表达式的操作数不能是 C 风格转型;

C++ 标准中不指定运算符名、优先级或结合顺序。C++ 标准使用类 EBNF 文法描述对应语法标记的语义。

运算符优先级与运算顺序无关;除逗号、逻辑与、逻辑或、赋值以外的运算符的运算顺序大多是未指明的。

最近更新:
代码未运行