C语言中ll 和&&优先级问题:如何验证&&优先级比||高而避开惰性原则?当我用类似1||1&&0验证时会遇到惰性原则,即计算机运行||前为1了就不继续运算||后的了 有没有大佬能用避开惰性原则的方法说明&&优先级比||高?
&&的优先级是比||高的 具体体现在 --x||--y&&++z应该是先判断--x是否为0 为0继续判断(--y&&++z)而不是判断--y --x为1则不继续判断后面 有没有具体的优先级影响运算结果的实例举一下?
可是这个--x||--y&&++z||++n不管是有没有这个优先级 结果都是一样的呀😳 也就是说我从左往右运行和先进行逻辑与运算是一个结果 我在实际操作里面也没有碰到过有区别的 那既然没区别 为啥还要设置这样一个优先级呢 是为了让我们理解计算机是如何运行的吗 还是说确实有影响结果的例子 ?
追答虽然结果最终都是一样的,优先级高代表着先计算,这就是优先级的规定原因。
是计算机运行的顺序,而不是为了给人的逻辑分析。。
计算机会先判断--x是否为0,然后判断--y&&++z这个整体是否为0,最后判断++n。。
记住:优先级是针对计算机的运行规范,而不是给你、给人的计算顺序。
如果没有这个优先级,计算机就会在判断完了--x是否为零后,直接判断--y是否为0,等于先判断的是--x||--y,然后&&++z,这是没有&&优先级的规范了。
对于编程者来说,可以认为他们是同级。
好的 谢谢
不是一致的 &&的优先级是比||高的 具体体现在 --x||--y&&++z应该是先判断--x是否为0 为0继续判断(--y&&++z)而不是判断--y --x为1则不继续判断后面 如果是同优先级 就不会发这个问题了…
追答你说的对的,C语言有一个Operators Precedence的表,那个&&的确是在||的上面。我觉得你的例子就是挺好的呀