提升是否发生在 Java 的增量之前?

Does promotion occur before increment in Java?

我在 OCA 问题中看到过这个问题,想知道为什么它输出 90 而不是 100。 这是代码:

int x = 9;
long y = x * (long) (++x);
System.out.println(y);

所以,我认为这会做的是,首先,增加 x(因为这是一开始发生的事情,对吗?)然后它会进行类型提升并取左边的 x,即 10,将其变成 long 和乘以这两个长。对吗?

没有。每个运算符的操作数从左到右计算。因此,* 运算符的第一个操作数 x 在第二个操作数 (long) (++x) 之前计算。因此9乘以10.