public class Test
{
public static void main(String[] args)
{
int x = 0;
int y = 0;
int k = 0;
for (int z = 0; z < 5; z++) {
if ((++x > 2) && (++y > 2) && (k++ > 2))
{
x++;
++y;
k++;
}
}
System.out.println(x + ”” +y + ”” +k);
}
}
看到如上一道java题,掉在 && 的坑里了,原来 && 有个短路原则,一旦前面判断为 false ,后面的判断便不执行了。
所以:
- z=0 : x=1, y=0, k=0;
- z=1 : x=2, y=0 ,k=0
- z=2: x=3, y=1, k=0
- z=3: x=4, y=2, k=0
- z=4: x=5, y=3, k=1
循环完了,仍是false .输出结果为:5 3 1