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ということです。したがって、 の場合、 は にインクリメントされますが、式の結果の値は です。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ます。
i = i++ + f1(i);
最初に i を 1 にインクリメントしてf1(1)を呼び出すと、 iが出力され、 1 が出力され、 0 + 0を計算して main メソッドのiに格納される 0 が返され、出力が1 , 0 になるように main に出力されます。