私はこれが答えられたことを知っていますが、別の説明が役立つかもしれないと考えました.
それを説明する別の方法は次のとおりです。
++i
の結果が返され、元の結果が返され、次のアクションのためにnew i
保存されます。i++
i
new i
それを考える方法は、式の中で何か他のことをすることです。の現在の値を出力する場合、 が式の中で変更されたか、式の後に変更されたi
かによって異なります。i
int i = 1;
result i = ++i * 2 // result = 4, i = 2
i
結果が計算される前に評価 (変更) されます。この式の出力i
は、この式に使用される変更された値を示しますi
。
result i = i++ * 2 // result = 2, i = 2
i
結果が計算された後に評価されます。したがって、この式から印刷すると、この式で使用されるi
元の値が得られますが、さらに使用するために変更されます。したがって、式の直後に の値を出力すると、 の新しいインクリメントされた値が表示されます。の値が変更されたため、印刷されているか使用されているか。i
i
i
i
i
result i = i++ * 2 // result = 2, i = 2
System.out.println(i); // 2
一貫したパターンを維持し、すべての値に印刷行を含めた場合:
int i = 3;
System.out.println(i); // 3
System.out.println(i++); // 3
System.out.println(i); // "4"
System.out.println(++i); // 5
System.out.println(i); // "5"
System.out.println(++i); // "6"
System.out.println(i++); // "6"
System.out.println(i); // "7"