09章で学んだ内容を試験形式で確認する。
前置と後置の違いを混同した問題が頻出。
| 書き方 | 名称 | 動作 |
|---|---|---|
++a | 前置インクリメント | a を増やしてから式の値として使う |
a++ | 後置インクリメント | 式の値として使ってから a を増やす |
--a | 前置デクリメント | a を減らしてから式の値として使う |
a-- | 後置デクリメント | 式の値として使ってから a を減らす |
a++; と書く場合は前置・後置どちらでも結果は同じ。Q1. 次のコードで b と a の値はどれか。
int a = 5;
int b = a++;
| 変数 | 初期 | b = a++(代入) | a++ (加算) |
|---|---|---|---|
| a | 5 | 5 | 6 |
| b | — | 5 | 5 |
正解:ア
後置なので現在値(5)を b に代入してから a を増やす。
Q2. 次のコードで y と x の値はどれか。
int x = 3;
int y = ++x;
| 変数 | 初期 | ++x(加算) | y = x(代入) |
|---|---|---|---|
| x | 3 | 4 | 4 |
| y | — | — | 4 |
正解:ウ
前置なので x を先に増やしてから(4)を y に代入する。
Q3. 次のコードで a, i, j の値はどれか。
int i = 2, j = 3;
int a = i++ + --j;
| 変数 | 初期 | --j(先に減算) | a = i + j(代入) | i++(加算) |
|---|---|---|---|---|
| i | 2 | 2 | 2(使用) | 3 |
| j | 3 | 2 | 2(使用) | 2 |
| a | — | — | 4 | 4 |
正解:ア
i++ は i=2 を使って後で3に増加。--j は先に j を2に減らして使う。2+2=4。
Q4. 次のコードで a, b, c の値はどれか。
int a = 1, b = 2, c;
c = ++a + b++;
| 変数 | 初期 | ++a(先に加算) | c = a + b(代入) | b++(加算) |
|---|---|---|---|---|
| a | 1 | 2 | 2(使用) | 2 |
| b | 2 | 2 | 2(使用) | 3 |
| c | — | — | 4 | 4 |
正解:ア
++a → a=2、b++ → b=2 を使ってから3に増加。c = 2+2 = 4。