package mycom;
public class t7 {
public static void main(String[] args) {
int x=0,y=1,z=3;
if(++x==y--&x++==1||--y==0||--z==2){
System.out.println("x="+x+",y="+y+",z="+z);
}else{
System.out.println("y="+y+",x="+x);
}
}
}
题目:说说上面代码的结果。并给出解释。
逻辑运算符,一直很迷糊,这好,今天笔试,小考题一道,果不其然,做错了。哈哈
自己简单总结下吧:
&&:与
A&&B A、B同为true,才返回true,否则false。会短路的
&:不短路的与
A&B 作用同&&。但不会短路
||:或
A||B A、B中有一个true,就返回true,否则false。会短路的
|:不短路的或
A|B 作用同||。但不会短路。
什么叫短路?
举例说明,一目了然。
A||B。A为true,则B不会被执行。这,就是短路。-.-
A&&B,A为false,则B就不会执行了。
回到开篇的问题。执行结果是
x=2 y=0 z=3
++x==y--&x++==1||--y==0||--z==2
true&true -> true,所以||后面的部分都没有执行