ウェピックスではウェブ界の情報をピックアップします!
menu
ホーム > PHPの文法 > 4 演算子 > PHP の 演算子の優先順位と結合性

PHP の 演算子の優先順位と結合性

Pocket

- 1 分ノート ! -

  • 演算子には評価の優先順位がある
  • ( ) 括弧を使用して計算の優先順位を変更
  • ( ) 括弧入れ子にして使用できる
    その場合内側の ( )括弧 内から計算される
  • 優先順位が同じ場合は結合性によって評価順が決まる
  • 結合性は左右どちらから計算するかの決まり
  • 結合性は優先順位であり演算子によってleft 或いは rightと決まっている


優先順位について

POINT

  • 演算子には評価の優先順位がある

 演算子には評価の優先順位があります。式の中に複数の演算子が登場した場合、優先順位に従って評価されます。例えば「*(乗算)」は「+(加算)」より優先されます。

結果は

47

となります。

5 * 8 の「*(乗算)」を先に行ってから、7 + 40 の「+(加算)」を行います。


特定部分の計算を優先させたい場合

POINT

  • ( ) 括弧を使用して計算の優先順位を変更
  • ( ) 括弧入れ子にして使用できる
    その場合内側の ( )括弧 内から計算される

 強制的に特定部分の計算を優先させる場合は「()括弧」を使用します。「()括弧」内の計算が優先されて評価されます。

結果は

96

となります。

7 + 5 の「+(加算)」が先に計算され、次に、12 * 8 の「*(乗算)」が計算されます。

()括弧」を入れ子にした場合、内側の「()括弧」内から計算されます。

結果は

10

となります。


優先順位が同じ場合

POINT

  • 優先順位が同じ場合は結合性によって評価順が決まる
  • 結合性は左右どちらから計算するかの決まり
  • 結合性は優先順位であり演算子によってleft 或いは rightと決まっている

 同じ優先順位の演算子が式に複数使用された場合、その演算子の結合性によって評価する順番が 決まります。

演算子は、右(right)から計算するのか、あるいは左(left)から計算するのか、がそれぞれ決まっています。それが演算子の結合性です

右 から評価するのか 左 から評価するのかによって結果が異なります

左から評価した場合
[ 4 ]

右から評価した場合
[ 0.25 ]

乗算と除算の結合性はleftなので左から評価されます。

従って、

結果は

4

となります。

以下は両方同じ意です。

下の式は「括弧()」を使用して明示的に左から計算するようになっていますが、
乗算と除算の結合性は左(left)なので同じ意になります。

結果は

1

となります。

優先順位と結合性の表

優先順位 結合時の評価 演算子
19 結合しない new
18 left [
17 結合しない ++
  結合しない
  right ~
  right (int) (float) (string) (array) (object) (bool)
  right @
  結合しない instanceof
  right !
16 left *
/
%
15 left +

.
14 left <<
>>
13 結合しない <
<=
>
>=
<>
12 結合しない ==
!=
===
!==
11 left &
10 left ^
9 left |
8 left &&
7 left ||
6 left ? :
5 right =
+=
-=
*=
/=
.=
%=
&=
|=
^=
<<=
>>=
=>
4 left and
3 left xor
2 left or
1 left ,


分かりやすい式の記述

POINT

  • 「*(乗算)」と「/(除算)」は「+(加算)」と「-(減算)」より優先させる
  • それ以外は ( ) 括弧 を使用する


サンプルコード

– サンプル Click Here ! –

実行結果
乗算 優先順位
47

()括弧による優先順位の変更
96

乗算 除算 結合性と()括弧による優先順位の変更

4
4

乗算 除算 結合性と()括弧による優先順位の変更
1
1

乗算 除算 結合性と()括弧による優先順位の変更
1.875
1.875

– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

投稿日:2017年3月21日
最終更新日:2017年03月22日

関連記事

配列関数サンプル

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://wepicks.net/phpref-operatorsprecedence/trackback/