C++程序设计中,&&和||的优先级问题

29 篇文章 0 订阅

转载https://zhidao.baidu.com/question/426219427238900292.html

提问:

这个程序里面,为什么不先执行(++y)&&(++x)?程序先判断了x>y,然后后面的那部分表达式就被短路了。&&不是比||优先级高吗?请问怎么解释。

回答:

C/C++逻辑判断表达式上有个短路效应
A || B,当A为逻辑真时,整个表达式的值已经可以确定为真,B就不执行了
A && B,当A为逻辑假时,整个表达式的值已经可以确定为假,B就不执行了
这里x>y为真,所以后面的(++y)&&(++x)就不执行了。

追问

当&&和||同时存在的时候,即 A || B && C 的时候,为什么不是先计算B&&C?

追答

如果A已经是逻辑真,就没必要再计算B&&C了。虽然&&的优先级比||高,用括号括起来看是这样:(A) || (B && C),
A和B&&C是同等优先运行的表达式,按照从左至右的运行规则,先计算A,发现A为逻辑真后,B&&C就不执行了。

 

优先级高只是结合(律)的问题(即括号怎么放的问题),但不是计算的先后顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值