下列程序的输出结果是什么?

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了