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

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

DDD
リリース: 2024-10-27 03:26:29
オリジナル
571 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート