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);

ここで理解する必要があることの 1 つは、正確に何を実行i++、何を返すかiということです。したがって、 の場合、 は にインクリメントされますが、式の結果の値は です。ii == 0i++i10

Java では、式は左から右に評価されます。したがって、上記の式でi++は、 が最初に評価され、次に が評価されf1(i)ます。

あとi++、実際i == 1そうです。このメソッドは、 の値 ( の後にカンマを付けて ) を出力し、 を返します。f1(i)f1(1)i10

(インクリメントされる前の)i++の古い値を返すため、式は次のようになります。i

i = 0 + 0;

1 つ目0は の結果i++、2 つ目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を計算して main メソッドのiに格納される 0 が返され、出力が1 , 0 になるように main に出力されます。

于 2012-04-06T08:53:37.783 に答える