Java のポストインクリメント演算子
質問:
以下のコード スニペットでは、なぜポストインクリメント演算子 j は j に 0 を割り当てますか?
public class Test { public static void main(String[] args) { int j = 0; for (int i = 0; i < 100; i++) { j = j++; } System.out.println(j); // prints 0 } }
書籍「Java Puzzlers」の著者によると、ステートメント j = j は次のシーケンスに似ています:
temp = j; j = j + 1; j = temp;
ただし、ステートメント a = b は b に値 1 を割り当てます。これはポストインクリメント演算子の予期される動作と矛盾します。
答え:
の間違い議論は、増分規則を適用して、 j = j ではなく a = b に代入することにあります。 a = b の正しい演算順序は次のとおりです。
temp = b; b = b + 1; // increment a = temp; // assign
同じルールを j = j に適用すると、次のようになります。
j = j; j = j + 1; // increment
j の初期値は 0 であったため、インクリメント前の j の値が式で使用されているため、インクリメント後の演算子は 0 を返します。
したがって、代入ステートメントは j = 0 と評価されるため、j の最終値は 0 になります。
以上がJava で j = j が j に 0 を代入するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。