C++运算符优先级表

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

::

::

::

全局作用域

类作用域

命名空间作用域

::name

class::name

namespace::name

.

->

[]

()

()

成员选择

成员选择

下标

函数调用

类型构造

a.b

a->b

a[b]

函数名(参数)

类型(参数)

++

--

typeid

typeid

explicit cast

后置递增

后置递减

类型ID

运行时类型ID

类型转换

a++

a--

typeid(type)

typeid(expr)

cast_name<type>(expr)

++

--

~

!

-

+

*

&

()

sizeof

sizeof

Sizeof...

new

new[]

delete

delete[]

noexcept

前置递增

前置递减

位求反

逻辑非

一元负号

一元正号

解引用

取地址

类型转换

对象的大小

类型的大小

参数包的大小

创建对象

创建数组

释放对象

释放数组

能否抛出异常

++a

--a

~a

!a

-a

+a

*a

&a

(type)a

sizeof a

sizeof(type)

sizeof...(name)

new type

new type[size]

delete a

delete[] a

noexcept(expr)

->*

.*

指向成员选择的指针

指向成员选择的指针

ptr->*member

ptr.*member

*

/

%

乘法

除法

取模

a*b

a/b

a%b

+

-

加法

减法

a+b

a-b

<<

>>

向左移位

向右移位

a<<b

a>>b

<

<=

>

>=

小于

小于等于

大于

大于等于

a<b

a<=b

a>b

a>=b

==

!=

相等

不相等

a==b

a!=b

&位与a&b
^位异或a^b
|位或

a|b

&&逻辑与a&&b
||逻辑或a||b
?:条件a?b:c
=赋值a=b

*=,/=,%=

+=,-=

<<=,>>=

&=,|=,^=

复合赋值

a+=b等

throw抛出异常throw a
逗号a,b

这个表按优先级从高到低的顺序排列,最上面的运算符优先级最高,往下运算符优先级降低,同一格内的运算符优先级相同,按左右结合律来决定先执行谁

左结合律

在C++中,左结合律是指多个相同优先级的操作符按照从左到右的顺序进行计算。

一个常见的左结合操作符是加法操作符+和减法操作符-。考虑下面的表达式:

int a = 5 + 3 - 1;

按照左结合律,首先计算5 + 3,然后再计算结果 - 1。

另一个示例是乘法操作符*和除法操作符/。考虑下面的表达式:

int a = 10 / 2 * 3;

按照左结合律,首先计算10 / 2,然后再将结果乘以3。

需要注意的是,左结合律适用于大多数操作符,但也有一些例外情况,如赋值操作符=和递减操作符--是右结合的。在编写代码时,了解操作符的结合性是十分重要的,以保证表达式的计算顺序符合预期。

右结合律

在C++中,右结合律是指多个相同优先级的操作符按照从右到左的顺序进行计算。

一个常见的右结合操作符是赋值操作符=。考虑下面的表达式:

int a = b = 5;

按照右结合律,首先将5赋值给b,然后再将b的值赋值给a。

另一个示例是递减操作符--。考虑下面的表达式:

int a = 5; int b = --a;

按照右结合律,先对a进行递减操作,然后将递减后的结果赋值给b。

需要注意的是,大多数操作符都是左结合的,而右结合律通常适用于少数操作符,如赋值操作符和递减操作符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值