PHP演算子の優先順位を解説!一覧表と評価順序のポイント
はじめに
演算子の優先順位とは、ひとつの式の中に複数の演算子が含まれる場合に、どの演算から先に実行するかを決めるルールです。たとえば「2 + 6 / 3」という式では、除算演算子「/」が加算演算子「+」よりも高い優先順位を持つため、まず「6 / 3」の除算が行われ、その結果に対して加算が実行されます。
特定の演算を意図した順序で実行したい場合には、括弧「( )」を使用します。たとえば「(2 + 6) / 3」と記述すれば、加算が先に評価され、その後で除算が行われます。
同じ優先順位の場合の評価順序
複数の演算子が同じ優先順位を持つ場合には、「結合規則(associativity)」によって評価の方向が決まります。左結合の演算子は左から右へ、右結合の演算子は右から左へと評価されます。また、同じ優先順位でありながら非結合(non-associative)に指定されている演算子は、隣り合わせで使用することができません。
PHP演算子の優先順位一覧表
以下の表は、PHPの主な演算子を優先順位の高い順(降順)に並べたものです。表の上にある演算子ほど先に評価されます。
| 演算子 | 目的 |
|---|---|
| clone new | オブジェクトのクローンと新規インスタンス生成 |
| ** | べき乗 |
| ++ -- | インクリメント / デクリメント |
| ~ (int) (float) (string) (array) (object) (bool) | 型キャスト |
| instanceof | 型判定 |
| ! | 論理否定(NOT) |
| * / | 乗算 / 除算 |
| % | 剰余(モジュロ) |
| + - . | 加減算および文字列連結 |
| << >> | ビットシフト |
| < <= > >= | 大小比較 |
| == != === !== <> <=> | 等価・同一性の比較 |
| & | ビットAND / リファレンス |
| ^ | ビットXOR(排他的論理和) |
| | | ビットOR |
| && | 論理AND |
| || | 論理OR |
| ?? | Null合体演算子 |
| ? : | 三項演算子 |
| = += -= *= **= /= .= %= &= |= ^= <<= >>= ??= | 代入演算子 |
| yield from | ジェネレータの委譲 |
| yield | ジェネレータでの値の生成 |
| 文字列の出力 | |
| and | 論理AND(低優先度) |
| xor | 排他的論理和(低優先度) |
| or | 論理OR(低優先度) |
まとめ
演算子の優先順位と結合規則を正しく理解しておくことで、意図しない計算結果やバグを防ぐことができます。特に、代入演算子と「and」「or」などの低優先度の論理演算子を混在させると、直感に反する動作になることがあるため注意が必要です。複雑な式を記述する際は、括弧を活用して評価順序を明示することをおすすめします。
-
C#の演算子の優先順位とは?基本ルールとサンプルコードで解説
演算子とは演算子(オペレーター)とは、コンパイラに対して特定の数学的処理や論理処理を実行するよう指示するための記号です。C#には、算術演算子・関係演算子・論理演算子など、さまざまな種類の演算子が用意されています。演算子の優先順位とは演算子の優先順位とは、1つの式の中で各項がどのようにグループ化され、どの順番で評価されるかを決めるルールです。この優先順位は式の評価結果に直接影響します。すべての演算子が同じ優先順位を持つわけではなく、たとえば乗算演算子(*)は加算演算子(+)よりも高い優先順位を持ちます。そのため、a + b * c という式は (a + b) * c ではなく a + (b *
-
Pythonの演算子の優先順位とは?優先度一覧表とコード例でわかりやすく解説
Pythonでは、1つの式の中に複数の演算子が含まれている場合、あらかじめ決められた演算子の優先順位に従って評価が行われます。優先順位の高い演算子ほど先に処理されるため、このルールを正しく理解することは、意図した通りの計算結果を得るうえで非常に重要です。 以下の表は、Pythonの主な演算子を優先順位の高い順(上位から下位へ)に並べたものです。 番号演算子と説明 1**べき乗(累乗)演算 2~ + -補数(ビット反転)、単項プラスと単項マイナス(後ろ2つのメソッド名は +@ と -@) 3* / % //乗算、除算、剰余(余りの計算)、切り捨て除算 4+ -加算と減算 5>> &l