の
int x = 5;
int answer = x++ * 6 + 4 * 10 / 2;
出力は 50 ですが、なぜ ++ 演算子は式を 51 に評価しないのでしょうか?
これ++
はx
結果ではありません。
++ 演算子が式を 51 に評価しないのはなぜですか?
それがどのように、またはなぜ機能するのか説明できますか? あなたがそれをしたいなら、ただそうしてください
int answer = x * 6 + 4 * 10 / 2 + 1;
割り当ては、ステートメントの実行後にインクリメントする後置演算子を使用しています。
JLSはこれについて言及しています:
後置インクリメント式の値は、新しい値が格納される前の変数の値です。
詳細については、完全な仕様のエントリを参照してください。
++ 後置演算子の定義された効果は、x
あたかも と書いたかのように変数がインクリメントされることですがx = x+1
、式x++
の値はインクリメント前の値です。x
がどのように変化するかについて同じ効果を持たせたいが、周囲の式でafter avlue を使用する場合は、 を使用する必要があります++x
。実際に の内容をまったくインクリメントしたくない場合はx
、 を使用します(x+1)
。
(ただし、インクリメントされた値の割り当てが行われるときは定義されていないと思いますx
-その値を取得するよりも後かもしれませんanwser
; 一方、通常x++
はほとんどアトミックです。)
後置演算子はステートメントの実行後に評価されます。ジャワ
によると
インクリメント/デクリメント演算子は、オペランドの前 (プレフィックス) または後 (ポストフィックス) に適用できます。コード結果++; そして++結果; どちらも結果が 1 ずつインクリメントされて終了します。唯一の違いは、プレフィックス バージョン (++result) はインクリメントされた値に評価されるのに対し、ポストフィックス バージョン (result++) は元の値に評価されることです。