3
class C{
    static int f1(int i) {
        System.out.print(i + ",");
        return 0;
    }

    public static void main (String[] args) {
        int i = 0;
        i = i++ + f1(i);
        System.out.print(i);
    }
}

为什么答案是 1,0。请解释。

4

2 回答 2

5

看表达式:

i = i++ + f1(i);

您需要在这里了解的一件事是究竟做了什么i++并返回:它递增i,但返回 的i。所以 if i == 0, theni++递增i1,但表达式的结果值为0

在 Java 中,表达式是从左到右计算的。所以在上面的表达式中,i++首先被评估,然后f1(i).

之后i++,其实也是i == 1如此。此方法打印 的值,即后面带有逗号,并返回。f1(i)f1(1)i10

由于i++返回(在递增之前)的旧值i,因此表达式变为:

i = 0 + 0;

第一个0是 的结果i++,第二个0是 的结果f1(i)。所以,i被赋值0。最后,打印 的值i

于 2012-04-06T09:03:04.863 回答
2
i = i++ + f1(i);

首先 i 递增到 1 并调用f1(1),然后打印i ,它打印1 ,并返回 0通过计算0 + 0存储在main 方法的i中,然后在 main 中打印它,因此输出变为1, 0

于 2012-04-06T08:53:37.783 回答