运算符优先级和结合性

C++ 语言包括任何 C 运算符并添加若干新运算符。 运算符指定要执行的计算下列操作之一:

  • 一个操作数 (一元运算符)

  • 两个操作数 (二元运算符)

  • 三个操作数 (三元) 运算符

运算符遵循严格的优先级,定义包含这些运算符的表达式计算顺序。 运算符与在其左侧的表达式或在其右侧的表达式;这称为 “结合性”。下表显示 C++ 运算符优先级和结合性 (由高至低的优先级)。 表的同一段落的运算符在表达式的发布的顺序相同优先级和计算,除非显式强制由括号。

C++ 运算符优先级和结合性

运算符

名称或含义

结合性

::

范围解析

 

 

 

.

成员选择 (对象)

从左到右

–>

成员选择 (属于指针)

从左到右

[ ]

数组下标

从左到右

( )

成员函数调用初始化

从左到右

++

后缀递增

从左到右

––

后缀递减

从左到右

typeid( )

类型名称

从左到右

const_cast

类型转换

从左到右

dynamic_cast

类型转换

从左到右

reinterpret_cast

类型转换

从左到右

static_cast

类型转换

从左到右

 

 

 

sizeof

对象或类型的范围

从右到左

++

前缀递增

从右到左

––

前缀递减

从右到左

~

1 的补码

从右到左

!

逻辑 " 非 "

从右到左

一元负

从右到左

+

一元加号

从右到左

&

地址

从右到左

*

间接寻址

从右到左

new

创建对象

从右到左

delete

销毁对象

从右到左

( )

Cast

从右到左

 

 

 

.*

指向成员的指针 (对象)

从左到右

–>*

指向成员的指针 (属于指针)

从左到右

 

 

 

*

乘法

从左到右

/

除法

从左到右

%

模数

从左到右

 

 

 

+

添加

从左到右

减法

从左到右

 

 

 

<<

左移

从左到右

>>

右移

从左到右

 

 

 

<

小于

从左到右

>

大于

从左到右

<=

小于或等于

从左到右

>=

大于或等于

从左到右

 

 

 

==

相等

从左到右

!=

不相等

从左到右

 

 

 

&

按位“与”

从左到右

 

 

 

^

按位“异或”

从左到右

 

 

 

|

按位“与或”

从左到右

 

 

 

&&

逻辑“与”

从左到右

 

 

 

||

逻辑“或”

从左到右

 

 

 

expr1 ? expr2 : expr3

条件运算

从右到左

 

 

 

=

赋值

从右到左

*=

乘法赋值

从右到左

/=

除法赋值

从右到左

%=

取模赋值

从右到左

+=

加法赋值

从右到左

–=

减法赋值

从右到左

<<=

左移赋值

从右到左

>>=

右移赋值

从右到左

&=

按位、赋值

从右到左

|=

包含按位或分配

从右到左

^=

按位 " 异或 " 赋值

从右到左

 

 

 

throwexpr

引发表达式

从右到左

 

 

 

,

逗号

从左到右

请参见

参考

C++运算符

运算符重载