不明白这段代码的答案(java)

Abh*_*ash 3 java

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

怎么回答是1,0.请解释.

Jes*_*per 5

看表达式:

i = i++ + f1(i);
Run Code Online (Sandbox Code Playgroud)

你需要理解的一件事是确切地i++做什么和返回:它递增i,但返回旧的i.因此,如果i == 0,则i++递增i1,但表达式的结果值为0.

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

之后i++,实际上也是i == 1如此.此方法打印后面带逗号的值,然后返回.f1(i)f1(1)i10

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

i = 0 + 0;
Run Code Online (Sandbox Code Playgroud)

第一个0是结果i++,第二个0是结果f1(i).所以,i被分配0.最后,打印出值i.