第2章 PHPの基本 / 第1回 模擬試験
次のコードの実行結果として正しいものはどれか。 ```php $n = 2; $p = 3; ++$n; $p *= 2; $a = "$n, $p"; --$n; $p *= 3; $b = "$n, $p"; print $a . ' / ' . $b; ```
3,6 / 1, 9
3, 6 / 2, 18
正解
3,9 / 1, 9
3, 9 / 2, 27
解説
インクリメント/デクリメント演算子(`++`, `--`)と複合代入演算子(`*=`)の評価順序を1行ずつ追うと次の通りです。
・初期値: `$n = 2; $p = 3;`
・`++$n;` → `$n = 3`
・`$p *= 2;` → `$p = 3 * 2 = 6`
・`$a = "$n, $p";` → `$a = "3, 6"`
・`--$n;` → `$n = 2`
・`$p *= 3;` → `$p = 6 * 3 = 18`
・`$b = "$n, $p";` → `$b = "2, 18"`
したがって出力は`3, 6 / 2, 18`になります。
例:
```
$n = 2; $p = 3;
++$n; $p *= 2; $a = "$n, $p";
--$n; $p *= 3; $b = "$n, $p";
echo $a . ' / ' . $b; // 3, 6 / 2, 18
```
前置インクリメント(`++$n`)は評価前に加算、後置(`$n++`)は評価後に加算という違いも合わせて押さえておきましょう。
(参照: 独習PHP 第4版 第2章 2.1節 変数 / 第3章 3.2節 代入演算子 p.50〜98)
関連する問題
- PHPの配列に関する次の記述のうち、誤っているものはどれか。
- PHPの型の相互変換に関する次の記述のうち、正しいものはどれか。
- PHPの変数と定数に関する次の記述のうち、誤っているものはどれか。
- PHPのデータ型に関する次の記述のうち、正しいものはどれか。
- 次の実行結果を得たい場合、コードの【A】と【B】に入る組み合わせとして正しいものはどれか。 ```php [ 実行結果 ] snowdrop, marigold [ コード ] $flowers = array(array('rose', 'hibiscus', 'tulip'), array('snowdrop','lily','gardenia'), array('lavender','gentian','pansy'), array('dandelion','sun flower','marigold')); print 【A】. ', ' .【B】; ```