次のコード断片をコンパイル、実行するとどうなりますか。
for(int i = 1;i<10;++i) {
System.out.print(i++ + " ");
}
選択肢
A)1 3 5 7 9 が出力される
B)1 3 5 7 9 11 が出力される
C)1 2 4 6 8 が出力される
D)2 4 6 8 が出力される
E)2 4 6 8 10 が出力される
F)2 4 6 8 10 12 が出力される
解答
A)1 3 5 7 9 が出力される
B)1 3 5 7 9 11 が出力される
C)1 2 4 6 8 が出力される
D)2 4 6 8 が出力される
E)2 4 6 8 10 が出力される
F)2 4 6 8 10 12 が出力される
解説
for (int i = 1; i < 10; ++i) {
System.out.print(i++ + " ");
}
ステップごとの説明
- ループの初期化:
int i = 1
: 変数i
が1に初期化されます。
- ループの条件:
i < 10
: ループが実行される条件です。i
が10未満の場合にループが続きます。
- ループの実行:
- 各ループのイテレーションでは、次の処理が行われます。
ループの詳細な流れ
次の状態: i
は 10
になり、ループ条件 i < 10
が満たされなくなるため、ループが終了します。したがって、出力は 1 3 5 7 9
になります。
初回 (i = 1):
System.out.print(i++ + " ")
の実行:
i++
は 1
を返しますが、これは実行後に i
が2にインクリメントされることを意味します。
出力: 1
次の状態: i
は 2
になります。
2回目 (i = 2):
System.out.print(i++ + " ")
の実行:
i++
は 2
を返し、次に i
が3にインクリメントされます。
出力: 2
次の状態: i
は 3
になります。
3回目 (i = 3):
System.out.print(i++ + " ")
の実行:
i++
は 3
を返し、次に i
が4にインクリメントされます。
出力: 3
次の状態: i
は 4
になります。
4回目 (i = 4):
System.out.print(i++ + " ")
の実行:
i++
は 4
を返し、次に i
が5にインクリメントされます。
出力: 4
次の状態: i
は 5
になります。
5回目 (i = 5):
System.out.print(i++ + " ")
の実行:
i++
は 5
を返し、次に i
が6にインクリメントされます。
出力: 5
次の状態: i
は 6
になります。
6回目 (i = 6):
System.out.print(i++ + " ")
の実行:
i++
は 6
を返し、次に i
が7にインクリメントされます。
出力: 6
次の状態: i
は 7
になります。
7回目 (i = 7):
System.out.print(i++ + " ")
の実行:
i++
は 7
を返し、次に i
が8にインクリメントされます。
出力: 7
次の状態: i
は 8
になります。
8回目 (i = 8):
System.out.print(i++ + " ")
の実行:
i++
は 8
を返し、次に i
が9にインクリメントされます。
出力: 8
次の状態: i
は 9
になります。
9回目 (i = 9):
System.out.print(i++ + " ")
の実行:
i++
は 9
を返し、次に i
が10にインクリメントされます。
出力: 9