public class E {
public static void main (String []args) {
int x = 1,y = 6;
while (y-->0) {
x--;
}
System.out.print("x="+x+",y="+y);
}
}
我将这个程序运行出来是x=-5,y=-1,这个是为什么?可以讲详细点吗?谢谢!
--在后面,是先取值执行表达式,然后再执行自减,所以y=6到y=1都会执行循环,总共执行6次
y x
6>0? 5 0
5>0? 4 -1
4 3
3 2
2 1
...
1>0? 0 -5
0>0? -1
打印 x y
while执行7次,前6次条件为TRUE,导致x被减了6次,所以为-5,最后一次循环时,y为0,条件不满足,但y--会导致y被再次减1,就成了-1了
int x = 1,y = 6;
while (y-->0) {
x--;
}
y--先用y再对y-1,--y先对y计算y-1再使用y值,y从6到1都能进入while循环一共执行了6次,这时候x=-5 y=0,6次执行完后,再执行while (y-->0)判断一次能不能进入循环,明显y=0不能进入循环,再对y-1,最后y=-1了