C++ 运算符优先级

C++ 开发:运算符优先级

下表列出了C + +运算符的优先级和结合性。
运算符列出从上到下,按照优先级

这里写图片描述
解析表达式时,操作员在一些上市行上表的优先级将被绑定收紧(括号)
好像比任何运营商,其参数如下一行上市进一步优先级较低。
例如,表达式std::cout < < a和b和解析* p + +(std::cout < < b和*)&(p + +),
而不是std::cout < <(a和b)或(* p)+ +。

运算符具有相同优先级的绑定参数的方向他们的结合性。
例如,解析表达式a = b = c =(b = c),而不是(a = b)= c,
因为从右到左的结合性的任务,
但是a + b - c解析(a + b)- c而不是+(b - c),
因为从左到右结合性的加法和减法。

结合性规范是多余的一元运算符,只显示完整性:
一元前缀运算符总是把从右到左(删除+ + * p是删除(+ +(* p)))和一元后缀运算符总是把从左到右([1][2]+ +(([1])[2])+ +)。
注意,成员访问运算符的结合性是有意义的,即使他们被分组与一元后缀运算符:
a.b + +解析(a.b)+ +,而不是一个a.(b + +)。

影响操作符重载运算符优先级。

笔记

优先级和结合性是编译时概念和独立于订单的评价,这是一个运行时的概念。
标准本身并不指定优先级水平。他们是来自语法。
const_cast、static_cast dynamic_cast、reinterpret_cast类型id,sizeof……,noexcept alignof不包括因为他们从来不是模棱两可的。
一些运营商替代拼写 (e.g. , and for &&, or for ||, not for ! , 等.).

三元条件的相对优先级和C和c++之间的赋值操作符不同:
在C语言中,作业是不允许元条件运算符的右边,所以e = < d ?+ +:= d不能被解析。
许多C编译器使用一个修改语法哪里?:具有更高的优先级比=解析,
e =(((< d)?(+ +):a)= d)(然后不能编译,
因为?:从来没有在C和左值=需要左边的左值)。
在c++中,?=有同等优先级和组从右到左,这e = < d ?+ +:= d解析作为< e =((d)?(+ +):(a = d))。

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值