JAVA 中的一个线性方程中多次 pre/post 递增的顺序是什么?

What is the order of multiple pre/post incrementations in one line equation in JAVA?

我有这段代码在JAVA8:

int x=3; int y = --x + x++ + --x ; System.out.print("y: " + y + " x: "+x);

据我了解应该这样拆分:

  1. y = 2 + x++ + --x; x = 2
  2. y = 2 + 2 + --x; x = 2
  3. y = 2 + 2 + 1; x = 1
  4. y = 5; x = 2

并打印 y: 6 x: 2 这里的操作顺序是什么?

这是因为 prepost 增量工作的方式,它得到这样的评估:

 1. y = --x + x++ + --x ;
 2. y = 2 + (2)++ + --(3);
 3. y = 2 + 2 + 2;
 4. y = 6

经过2次递减和1次递增后,x变为2。