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です。説明してください。
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です。説明してください。
式を見てください:
i = i++ + f1(i);
ここで理解する必要があることの 1 つは、正確に何を実行しi++
、何を返すかi
ということです。したがって、 の場合、 は にインクリメントされますが、式の結果の値は です。i
i == 0
i++
i
1
0
Java では、式は左から右に評価されます。したがって、上記の式でi++
は、 が最初に評価され、次に が評価されf1(i)
ます。
あとi++
、実際i == 1
そうです。このメソッドは、 の値 ( の後にカンマを付けて ) を出力し、 を返します。f1(i)
f1(1)
i
1
0
(インクリメントされる前の)i++
の古い値を返すため、式は次のようになります。i
i = 0 + 0;
1 つ目0
は の結果i++
、2 つ目0
は の結果ですf1(i)
。i
が割り当てられます0
。最後に、 の値を出力しi
ます。
i = i++ + f1(i);
最初に i を 1 にインクリメントしてf1(1)を呼び出すと、 iが出力され、 1 が出力され、 0 + 0を計算して main メソッドのiに格納される 0 が返され、出力が1 , 0 になるように main に出力されます。