促销是在Java增量之前发生的吗?

use*_*046 -1 java pre-increment type-promotion

我在OCA问题中看到了这个问题,需要知道为什么输出90而不是100.这里是代码:

int x = 9;
long y = x * (long) (++x);
System.out.println(y);
Run Code Online (Sandbox Code Playgroud)

那么,我认为这会做的是,首先,增加x(因为这是第一次发生的事情?)然后它会进行类型提升并取左x,即10,将其变为long并乘以这两个long.对?

Era*_*ran 9

不会.每个操作员的操作数从左到右进行评估.因此,在第二个操作数之前计算*运算符的第一个操作x(long) (++x).因此9乘以10.