int x = 1,y = 1;
if(x++ == 2 & ++y == 2){
x = 7;
}
System.out.println("x=" + x + ",y=" + y);
为什么x = 2,y = 2 ?
大侠们可以给我说下分析过程吗?
if(x++ == 2 & ++y == 2){
x = 7;
}
System.out.println("x=" + x + ",y=" + y);
为什么x = 2,y = 2 ?
大侠们可以给我说下分析过程吗?
x = 7;
}
1、x先判断,后++,但所以x++ == 2为false,但是&不短路,所以要计算++y,这个是先自增,所以y=2,++y==2为true,但是x++==2 为false,所以整个表达式为false,所以也就不会执行到x=7这部啦
所以最后输出的就是x = 2,y = 2
不知道表达明白没
最近表达能力有点下降
x++是x先参与运算后x再自增为1,先参加运算x=1,此时x==2是false,但是&不短路,所以要计算++y,这个是先自增,所以y=2,++y==2为true。整个if的结果是false。最终输出x = 2,y = 2
当使用&作逻辑与的时候,就是LZ这种情况,不管第一个表达式的计算结果是真是假,第二个表达式都会计算。x++ == 2 先==,再++; ++y == 2 先++,再==
x=x++;
搞懂这个一切都不是问题了
x会不变,你懂的哟
&&是条件与判断,有短路原则。
2、第一个是假,第二个是真,所以整体为假,赋值为7不执行
int x = 1,y = 1;
x=x+1;
if(x == 2 & y == 2){
x = 7;
}
y=y+1
System.out.println("x=" + x + ",y=" + y);我想问一下lz这段程序的输出是多少?