语言的优先级

编译器和解释器会对源代码运算数和不同运算符的组合感到困惑,用优先级解决先算什么后算什么。相同优先级的组合也会让编译器困扰应该先做什么,结合性应运而生。

优先级基本原则

编译型语言一般遵循如下优先级原则:

  • 单目运算符优先于双目运算符,双目运算符优先于三目运算符。
  • 算术运算符优先于关系运算符,关系运算符优先于逻辑运算符。
  • 大部分编程语言的运算符都是从左至右结合的,但是也有一些是从右至左结合的。例如,单目运算符(前缀后缀需要区分开)、三目运算符和赋值运算符是从右至左结合的。
  • 大体规则:初级运算符( )、[ ]、->、. > 单目运算符(包含逻辑非!) > 算术运算符(先乘除后加减) > 关系运算符 > 逻辑运算符(不包括!, && > ||) > 条件运算符 > 赋值运算符 > 逗号运算符。

C++支持运算符重载,运算符优先级不受运算符重载影响。

正则表达式优先级

  • 正则表达式元字符不止一种,依然存在优先级问题。比如,方括号比后向引用优先级更高。

条件运算符

不少人都困惑为什么a ? b : c结合性是从右向左?事实上,大家可能按照从左向右来推导,先判断a是否为真,为真得到b, 否则得到c. 这是计算过程的方向,和优先级结合性没半毛钱关系。结合性判断的是如下表达式:a ? b : c ? d : e是先算a ? b : c还是先算 c ? d : e. 现在大家都知道应该先算后面了。


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值