インクリメント/デクリメント演算子(前置・後置の評価順)難易度 高無料
次のコードの出力として正しいものを選べ。
1 public class Q3 {
2 public static void main(String[] args) {
3 int i = 5;
4 int j = i++ + ++i;
5 System.out.println(i + " " + j);
6 }
7 }
- A
7 12 - B
7 13 - C
6 12 - D
7 11
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済
解説
後置 i++ は「現在の値を式の値として使い、その後に i を1増やす」。前置 ++i は「先に i を1増やし、増やした後の値を式の値として使う」。この違いを左から順に追う。
i++:式の値は増やす前のi=5。副作用としてiは 6 になる。++i:まずiを 7 に増やし、式の値も7。
j = 5 + 7 = 12。最終的な i は 7。よって出力は 7 12。
- B
i++の式の値を増加後の6と誤解した計算(6+7=13)。後置演算子の式の値は増やす前の値(5)である。 - C最終的な
iの値を取り違えた誤り。i++と++iの副作用でiは5→6→7と2回増える。最終値は7。 - D
++iの式の値を増加前の6のまま使ったと仮定した誤り。前置演算子は増やした後の値(7)を返す。
ひっかけ: 「
i++ + ++i は同じ i を2回参照するから i×2 のように単純に計算できる」と考えて i=6 のまま両方に6を使ってしまう(6+6=12 は偶然近い値になるが根拠が誤り)のが典型。各演算子がいつ値を確定させ、いつ副作用を起こすかを左から順に追う必要がある。コマンド例と想定される挙動(未実行)
出力: 7 12
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)