提升是否发生在 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.
我在 OCA 问题中看到过这个问题,想知道为什么它输出 90 而不是 100。 这是代码:
int x = 9;
long y = x * (long) (++x);
System.out.println(y);
所以,我认为这会做的是,首先,增加 x(因为这是一开始发生的事情,对吗?)然后它会进行类型提升并取左边的 x,即 10,将其变成 long 和乘以这两个长。对吗?
没有。每个运算符的操作数从左到右计算。因此,*
运算符的第一个操作数 x
在第二个操作数 (long) (++x)
之前计算。因此9乘以10.