关于JAVA程序的问题,求高手解答

来源:百度知道 编辑:UC知道 时间:2024/05/29 20:34:38
public class test4
{
public static void main(String args[])
{
int x=0;
int y=0;
for(int z=0;z<3;z++)
{
if((++x>2)||(++y>2))
{
x++;
}
}
System.out.println(x+" "+y);
}
}
结果是8 2为什么Y=2??后面是X++,X不应该是7么??求高手解答
当z=2时,++x=3,y也是一样的,这样的话就要执行x++,所以x=4,x++不应该是输出x后再+1么,那此时的x不该是3么??

一步一步分析
第一次循环 z = 0; x = 1 ; y = 1 没有进入if语句
第二次循环 z = 1; x = 2 ; y = 2 没有进入if语句
第三次循环 z = 2; x = 3 ; y = 2(这里不在执行++y>2的语句 短路运算)
此时 进入if语句 x = 4
跳出循环 打印
x = 4 ; y = 2

X++不是指输出后再+1 举个例子
int x = 4 ;
if(++x == 5) 是指 先x自增1 ,x=5 再与5作比较 判定结果为true
if(x++ == 5) 是指 先与5作比较 判定结果为false 然后x自增1 x = 5

老兄,运行结果是4 2.x=4,y=2.
这个很简单。
当z=0时,++x=1,++y=1
x=1,y=1
当z=1时,同理,x=2,y=2
当z=2时,++x=3,y也是一样的,这样的话就要执行x++,所以x=4。需要说明的是,这里当z=2时,条件(++x>2)||(++y>2)只会执行++x,因为这时++x=3,可以确定条件成立,这里采用了短路的做法,因为条件已经满足了,所以后面的不再执行。因此,y=2