请问为什么逻辑运算符&&的优先级别比||高,但在一个逻辑表达式中若有多个&&或||时,运算总是从左到右进行?不是应该先算

问题描述:

请问为什么逻辑运算符&&的优先级别比||高,但在一个逻辑表达式中若有多个&&或||时,运算总是从左到右进行?不是应该先算&&吗?
1个回答 分类:综合 2014-12-12

问题解答:

我来补答
这个没有为什么的,这是规定的.

&&的优先级比||的高.
它们的顺序都是从左到右.

多个的时候,也是&&先,方向也是从左到右.

可能多个的时候,有其他运算符的问题,比较括号之类.
你说不是这样,你就得说出例子了.
再问: 例2:多个 && 或 || 符使用时的“短路操作” 。 int x,y,z,l1,l2; 比如说这个。。 x=y=z=1; l1= x || y && z; // l1、x、y、z的值分别为: x=-1; l2= x || y && --z; // l2、x、y、z的值分别为:
再答: 这个就是短路造成的。 l1那个应该没问题吧, 对于l2 要怎么看 x|| ( y&& --z) 对于逻辑运算符, 表达式1||表达式2 只要表达式1=true ,则不管表达式2的情况 对于逻辑运算符, 表达式1&&表达式2 只要表达式1=false 则不管表达式2的情况 。 这应该是优化的问题,这样就可以加快运算的速度 。 但是你换成 y&&--z || x 这样就不会了 为此,还有更好玩的地方, z=0 . x||( y/z) 这样也是没有问题的。
再问: 那11那个,既有||又有&&,为什么不是先算 y&& z而是先 x|| y?那样&&的优先性不是没有体现了吗?
再答: 上面不是说了吗。 对于逻辑运算符, 表达式1||表达式2 只要表达式1=true ,则不管表达式2的情况 因为表达式x=1了,所以他就不看表达式2了。 这不是优先级的问题,应该是优化的问题。只要表达式1为真,那么后面就可以不用管了
 
 
展开全文阅读
剩余:2000
上一页:
下一页:判断题。