第3章 演算子 / 第5回 模擬試験

PHPの演算子の優先順位と結合則に関する次の記述のうち、正しいものはどれか。

乗算`*`は加算`+`より優先順位が高く、先に計算される。 正解
すべての演算子は左から右へ評価される左結合である。
括弧`()`を使っても、演算の優先順位を変えることはできない。
優先順位が同じ演算子が並んだ場合、常にエラーになる。
解説
乗算`*`・除算`/`・剰余`%`は、加算`+`・減算`-`よりも優先順位が高く、式の中に混在していても先に計算されます(`2 + 3 * 4`は`2 + (3 * 4) = 14`になり、`(2 + 3) * 4 = 20`にはなりません)。 他の選択肢が誤りである理由は次の通りです。 ・PHPの演算子の結合則は演算子ごとに異なります。多くの演算子は左結合(左から右)ですが、べき乗`**`や三項演算子、代入演算子などは右結合です。「すべて左結合」というのは誤りです。 ・丸括弧`()`を使うと、演算子の優先順位に関わらず、括弧内を先に評価させることができます。「変えることはできない」というのは誤りです。 ・優先順位が同じ演算子が並んでも、結合則に従って順番に評価されるだけでエラーにはなりません。 例: ``` echo 2 + 3 * 4; // 14(*が先) echo (2 + 3) * 4; // 20(括弧で優先順位を変更) echo 2 ** 3 ** 2; // 512(**は右結合: 2 ** (3 ** 2)) ``` (参照: 独習PHP 第4版 第3章 演算子 3.7節 演算子の優先順位と結合則 p.118〜121)