逻辑或(或逻辑与)的优先级“悖论”(新手欢迎,大佬随意)
众所周知,逻辑与(&)和逻辑或(||)在运算符的优先级与结合性表中的地位都是比较低下的(分别位列第11、12),本来在参与运算时(没有小括号的邪恶力量时)都是比较靠后地被考虑的,就像地位低到土里的赋值运算符(=)一样。BUT!这俩货有个蛋疼的特性——短路求值,按照这一法则,我们在分析或写一个比较长的表达式时,必须要优先考虑这俩货(如果他俩没有被小括号挟持)先去计算运算符左边的表达式,再根据逻辑关系去决定是否运算右边的表达式。
如'a' + 'b' <= 'c' || a / b + d % c(出自小甲鱼带你学C带你飞S1E10课后作业)
那么我的问题来了,这能否理解为事实上逻辑与和逻辑或的优先级更高呢?
如果让我站在反方,我可能会反驳道:优先级因该是站在机器的立场上,计算顺序的先后,而不是按人思考的先后和习惯来决定!何况逻辑表达式的值本来就是最后算出的,上述只不过是一种事实的逻辑和提高效率的手段……
欢迎大家讨论!{:5_91:}
本帖最后由 jackz007 于 2020-2-27 13:31 编辑
并非运算符的优先级越高就越好。对于逻辑运算符来讲,当然是优先级越低越好了,那就意味着所有需要计算的表达式的结果都算出来了以后再进行逻辑判断,这正是我们所期望的顺序,难道不是吗? jackz007 发表于 2020-2-27 13:29
并非运算符的优先级越高就越好。对于逻辑运算符来讲,当然是优先级越低越好了,那就意味着所有需要 ...
有道理,
页:
[1]