public class Test {
public static void main(String args[]) {
int x = 0;
int y = 0;
for (int z = 0; z < 5; z++)
{
if ((++x > 2) || (++y > 2))
{
x++;
}
}
System.out.println(x + " " + y);
}}答案是8,2。 我自己算为什么是4,2?
public static void main(String args[]) {
int x = 0;
int y = 0;
for (int z = 0; z < 5; z++)
{
if ((++x > 2) || (++y > 2))
{
x++;
}
}
System.out.println(x + " " + y);
}}答案是8,2。 我自己算为什么是4,2?
{
public static void main(String args[])
{
int x = 0;
int y = 0;
for (int z = 0; z < 5; z++)
{
if ((++x > 2) || (++y > 2))
{
System.out.println(x + " " + y);
x++;
}
}
System.out.println(x + " " + y);
}}
这样写你就明白了
运算符左结合,(++y > 2) 在(++x > 2)成立的情形不执行
当z=1,执行if ((++x > 2) || (++y > 2)),x变为2,y变为2,不满足if,跳到下一次z循环
当z=2,执行if ((++x > 2) || (++y > 2)),x变为3,y还是2(或运算的特点),满足if,执行x++,x变为4,继续下一次Z循环
当z=3,执行if ((++x > 2) || (++y > 2)),x变为5,y还是2,满足if,执行x++,x变为6,继续下一次Z循环
当z=4,执行if ((++x > 2) || (++y > 2)),x变为7,y还是2,满足if,执行x++,x变为8,继续下一次Z循环
当z=5,不满足循环条件,循环退出
先执行++x不满足条件然后执行++y还不满足条件,不执行x++,此时x=1,y=1;
当z=1时:
先执行++x不满足条件然后执行++y还不满足条件,不执行x++,此时x=2,y=2;
当z=2时:
先执行++x满足条件,不再执行++y,然后执行x++,此时x=4,y=2;
当z=3时:
先执行++x满足条件,不再执行++y,然后执行x++,此时x=6,y=2;
当z=4时:
先执行++x满足条件,不再执行++y,然后执行x++,此时x=8,y=2;