public class Hfll
{
public static void main(String args[])
{
int x=0;
int y=0;
for(int k=0;k<5;k++)
{
if((++x>2)||(++y>2)) //这个条件到底该如何去执行啊
{
x++;
}
}
System.out.println(x+"and"+y);
}
}上面这段程序运行结果是8and2,我算到7and5,大家给解释下吧
下面是我理解的运算步骤:k=0,++x=1,++y=1,条件判断为假,不执行if语句,
k=1,++x=2,++y=2,条件判断为假,不执行if语句;
k=2,++x=3,++y=3,条件判断为真,执行x++;
k=3,++x=5,++y=4,条件判断为真,执行x++;
k=4,++x=7,++y=5,条件判断为真,执行x++;
此时x+=8,+y=5
哪里理解错了啊,问题可能小白了点,新人大家勿拍呵呵
{
public static void main(String args[])
{
int x=0;
int y=0;
for(int k=0;k<5;k++)
{
if((++x>2)||(++y>2)) //这个条件到底该如何去执行啊
{
x++;
}
}
System.out.println(x+"and"+y);
}
}上面这段程序运行结果是8and2,我算到7and5,大家给解释下吧
下面是我理解的运算步骤:k=0,++x=1,++y=1,条件判断为假,不执行if语句,
k=1,++x=2,++y=2,条件判断为假,不执行if语句;
k=2,++x=3,++y=3,条件判断为真,执行x++;
k=3,++x=5,++y=4,条件判断为真,执行x++;
k=4,++x=7,++y=5,条件判断为真,执行x++;
此时x+=8,+y=5
哪里理解错了啊,问题可能小白了点,新人大家勿拍呵呵
||的执行 是先判++x是否大于2 如果++x大于2就 再不执行++y>2 因为此时条件已经成立
所有 y一直是等于2
不知道楼主明白没
你可以运行下这个例子 就明白了
public class testHUO {
public static void main(String[] args) {
int x=2,y=0;
if(++x>1||++y>0){
++x;
}
System.out.println("x="+x);
System.out.println("y="+y);
}}
(1 > 0 || ++a > 0) ||运算符如果前面为真了,后面的++a>0就不会继续执行
(1 > 0 | ++a > 0) |运算符不管前面的结果,后面的++a>0都会执行
同理
&&运算符如果前面为假,后面的语句不会执行
&运算符不论前面的结果,后面的语句都会执行
明白这个就很好理解了哦
k=0,++x=1,++y=1,条件判断为假,不执行if语句,
k=1,++x=2,++y=2,条件判断为假,不执行if语句;
k=2,++x=3,++y=2,(y被短路,下面的y都被短路)条件判断为真,执行x++;
k=3,++x=5,++y=2,条件判断为真,执行x++;
k=4,++x=7,++y=2,条件判断为真,执行x++;
此时x+=8,+y=2
(1 > 0 | ++a > 0) |运算符不管前面的结果,后面的++a>0都会执行
public static void main(String args[]) {
int x = 0;
int y = 0;
boolean flag = false;
for (int k = 0; k < 5; k++) {
flag = ((++x > 2) || (++y > 2));
if (flag == true) // 这个条件到底该如何去执行啊
{ System.out.print("k=" + k);
System.out.print(" x=" + x);
System.out.print(" y=" + y);
System.out.print(" (++x>2)||(++y>2)=" + flag);
System.out.println();
x++;
}
}
System.out.println(x + " and " + y);
}
}运行结果如下:
k=2 x=3 y=2 (++x>2)||(++y>2)=true
k=3 x=5 y=2 (++x>2)||(++y>2)=true
k=4 x=7 y=2 (++x>2)||(++y>2)=true
8 and 2从上面的结果可以看出,如果(++x>2)为真的话,那么(++y>2)就一直没有执行,一直是y=2。
不知道这样楼主是否能明白。
(1 > 0 | ++a > 0) |运算符不管前面的结果,后面的++a>0都会执行
如果(++x>2)为真的话,那么(++y>2)就一直没有执行,一直是y=2