鱼C论坛

 找回密码
 立即注册
查看: 1218|回复: 2

逻辑或(或逻辑与)的优先级“悖论”(新手欢迎,大佬随意)

[复制链接]
发表于 2020-2-27 13:06:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
众所周知逻辑与(&)逻辑或(||)运算符的优先级与结合性表中的地位都是比较低下的(分别位列第11、12),本来在参与运算时(没有小括号的邪恶力量时)都是比较靠后地被考虑的,就像地位低到土里的赋值运算符(=)一样。
BUT!这俩货有个蛋疼的特性——短路求值,按照这一法则,我们在分析或写一个比较长的表达式时,必须要优先考虑这俩货(如果他俩没有被小括号挟持)先去计算运算符左边的表达式,再根据逻辑关系去决定是否运算右边的表达式。
如'a' + 'b' <= 'c' || a / b + d % c(出自小甲鱼带你学C带你飞S1E10课后作业)

那么我的问题来了,这能否理解为事实上逻辑与和逻辑或的优先级更高呢?

如果让我站在反方,我可能会反驳道:优先级因该是站在机器的立场上,计算顺序的先后,而不是按人思考的先后和习惯来决定!何况逻辑表达式的值本来就是最后算出的,上述只不过是一种事实的逻辑和提高效率的手段……

欢迎大家讨论!


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-27 13:29:17 | 显示全部楼层
本帖最后由 jackz007 于 2020-2-27 13:31 编辑

       并非运算符的优先级越高就越好。对于逻辑运算符来讲,当然是优先级越低越好了,那就意味着所有需要计算的表达式的结果都算出来了以后再进行逻辑判断,这正是我们所期望的顺序,难道不是吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-27 13:34:30 From FishC Mobile | 显示全部楼层
jackz007 发表于 2020-2-27 13:29
并非运算符的优先级越高就越好。对于逻辑运算符来讲,当然是优先级越低越好了,那就意味着所有需要 ...

有道理,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 01:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表