【发布时间】:2017-08-03 10:50:01
【问题描述】:
我在 OCA 问题中看到了这个问题,需要知道为什么它输出 90 而不是 100。 代码如下:
int x = 9;
long y = x * (long) (++x);
System.out.println(y);
所以,我认为这会做的是,首先,增加 x(因为这就是一开始会发生的事情吗?)然后它会进行类型提升并取左 x 为 10,将其变成 long 并将它们相乘两个多头。对吧?
【问题讨论】:
-
@Guy,他说它打印了什么,他想知道它为什么打印它的作用。
-
我知道打印的是什么,但需要一个答案。
-
我不确定转换为 long 对这种情况有什么影响。
int y = x * (++x)得到同样的结果 -
@khelwood 下一个问题可能是“如果 x = Integer.MAX_VALUE 怎么办?”。但这只是我的猜测。
-
好像和类型提升没什么关系。
标签: java pre-increment type-promotion