第3章 演算子 / 第1回 模擬試験
PHPの論理演算子に関する次の記述のうち、正しいものはどれか。
`and`と`&&`は常に同じ優先順位を持つ。
`or`と`||`は常に同じ優先順位を持つ。
`xor`は両方のオペランドが`true`の場合に`true`を返す。
`!`演算子は論理否定を行う。
正解
解説
`!`演算子は、オペランドの真偽値を反転させる論理否定演算子です(`!true`は`false`、`!false`は`true`)。
他の選択肢が誤りである理由は次の通りです。
・`and`と`&&`はどちらも論理積を表しますが、優先順位が異なります。`&&`は代入演算子`=`より優先順位が高いのに対し、`and`は`=`より優先順位が低いため、意図しない結果になることがあります。
・`or`と`||`も同様に意味は同じですが優先順位が異なります。
・`xor`(排他的論理和)は、2つのオペランドの真偽値が異なる場合に`true`を返します。両方とも`true`(または両方とも`false`)の場合は`false`を返します。
例:
```
var_dump(true xor true); // false(両方trueなのでfalse)
var_dump(true xor false); // true(異なるのでtrue)
$result = true and false; // 優先順位の罠: = が and より先に評価されるため $result には true が入る
```
(参照: 独習PHP 第4版 第3章 演算子 3.4節 論理演算子 p.110〜111)
関連する問題
- 次のコードの【 A 】に入れた場合に`true`が返される組み合わせとして正しいものはどれか。 ```php if (【 A 】) { print("true"); } else { print("false"); } 【1】"php" > "perl" 【2】0 != "0" 【3】5 - 6 + 1 【4】"false" 【5】0 + false 【6】"543a" < 56 【7】abs(-6) > 10 / 2 ```
- 次のコードの実行結果として正しいものはどれか。 ```php $a = 2 + 3 * 6; $b = $a % 7; $c = $b ** 2; print($c); ```
- PHPの論理演算子に関する次の記述のうち、誤っているものはどれか。
- 次のコードの実行結果として正しいものはどれか。 ```php $a = 10; $b = 3; print $a / $b . " " . intdiv($a, $b) . " " . $a % $b; ```
- PHPの比較演算子に関する次の記述のうち、正しいものはどれか。