哪个方法编译器先执行?

Which method compiler executes first?

int i = 10, j = 5, k;

k = f(++i) + g(++i) + j+ 25;

是先计算f(++i)还是g(++i)

没有 运行 程序你怎么知道?

假设 fg 类似于

int f(int a)
{ return a; }

顺序如何根据编译器而变化?

除非另有修改,否则评估是从左到右的。所以在这种情况下,f(++i) 先行。

编辑:正如@sanA 指出的那样,可能会有编译器优化。在您的情况下,这不太可能(但并非不可能),因为您的功能可能属于副作用。

Which method compiler executes fist?

执行指令的不是编译器,而是JVM。

而Java编程语言保证运算符的操作数由JVM从左到右求值。来自 JLS Sec 15.7:

The Java programming language guarantees that the operands of operators appear to be evaluated in a specific evaluation order, namely, from left to right.

关于编译器是否会重新组织编译后的等价表达式的顺序class,可能是"optimization"的原因。这些可能会从一个 Java 版本更改为另一个版本,因此通常您甚至不应该考虑它。