运算符优先级
结合律 运算符 功能 用法


::
::
::
全局作用域
类作用域
命名空间作用域
::name
class::name
namespace::name




.
->
[]
()
()
成员选择
成员选择
下标
函数调用
类型构造
object.member
pointer->member
expr[expr]
name(expt_list)
type(expt_list)




++
--
typeid
typeid
explicit cast
后置递增运算
后置递减运算
类型ID
运行时类型ID
类型转换
lvalue++
lvalue--
typeid(type)
typeid(type)
cast_name<type>(expr)
















++
--
~
!
-
+
*
&
()
sizeof
sizeof
sizeof...
new
new[]
delete
delete[]
noexcept
前置递增运算
前置递减运算
位求反
逻辑非
一元负号
一元正号
解引用
取地址
类型转换
对象的大小
类型的大小
参数包的大小
创建对象
创建数组
释放对象
释放数组
能否抛出异常
++lvalue
--lvalue
~expr
!expr
-expr
+expr
*expr
&lvalue
(type)expr
sizeof expr
sizeof(type)
sizeof...(name)
new type
new type[size]
delete expr
delete[] expr
noexcept(expt)

->*
.*
指向成员选择的指针
指向成员选择的指针
ptr->*ptr_to_member
obj.*ptr_to_member


*
/
%
乘法
除法
取模(取余)
expr * expr
expr / expr
expr % expr

+
-
加法
减法
expr + expr
expr - expr

<<
>>
向左移位
向右移位
expr << expr
expr >> expr



<
<=
>
>=
小于
小于等于
大于
大于等于
expr < expr
expr <= expr
expr > expr
expr >= expr

==
!=
相等
不相等
expr == expr
expr != expr
& 位与 expr & expr
^ 位异或 expr ^ expr
| 位或 expr | expr
&& 逻辑与 expr && expr
|| 逻辑或 expr || expr
? : 条件 expr ? expr : expr




=
*=, /=, %=
+=, -=
<<=, >>=
&=, |=, ^=
赋值
复合赋值
lvalue = expr
lvalue += expr等
throw 抛出异常 throw expr
, 逗号 expr, expr