ホームページ >Java >&#&チュートリアル >Java で j = j が j に 0 を代入するのはなぜですか?

Java で j = j が j に 0 を代入するのはなぜですか?

DDD
DDDオリジナル
2024-10-27 03:26:29548ブラウズ

Why does j = j   assign 0 to j in Java?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。