演算子の優先順位

広告

四則演算で使用した演算子や、今後解説していく演算子には優先順位が決まっています。例えば次の例を見てください。

5 + 4 * 3

「5 + 4」の結果に対して3を乗算すれば27ですが、5に対して「4 * 3」の結果を加算すれば17となりどの演算から行うのかで結果は異なります。このように複数の演算子が使われている式ではどの演算から行うのかが重要となります。

四則演算に関する演算子の優先順位は以下のようになっています。

(優先順位が高い)
  *  /  %
  +  -
(優先順位が低い)

上の方が優先順位が高くなっています。そして同じ行の位置にある演算子は優先順位は同じです。

先ほどの例で言えば、「+」よりも「*」の優先順位が高いため先に「4 * 3」の演算が行われます。そしてその後に「5 + 12」と言う演算が行われます。

なお同じ優先順位の演算子の場合には演算子毎に決まっている結合順位に従います。四則演算の演算子の結合順位は左から右のため、左に記述されている演算子から行われます。

4 / 2 * 2

上記の場合、「*」と「/」の優先順位は同じですので、より左側にある「/」から先に演算が行われます。

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

演算子の優先順位とは異なる順序で演算を行いたい場合には括弧()を使います。演算子の優先順位に関わらず括弧で囲まれた演算は先に演算が行われます。

(5 + 4) * 3

上の例の場合、演算子だけを見ると「+」と「*」では「*」の優先順位が高いですが、括弧で囲われた演算が先に行われますのでまず「5 + 4」が演算され次に「9 * 3」が演算されます。よって全体の演算結果は「27」となります。

括弧の中に複数の演算子が使われている場合は演算子の優先順位によって演算が行われます。また括弧が多重に使用されている場合は内側の括弧が先に演算されます。

2 * ((5 + 3) * 4 - (4 + 5) / 3)

上記の場合は次のように演算が行われます。

1)5 + 3 = 8     //  2 * (8 * 4 - (4 + 5) / 3)
2)4 + 5 = 9     //  2 * (8 * 4 - 9 / 3)
3)8 * 4 = 32    //  2 * (32 - 9 / 3)
4)9 / 3 = 3     //  2 * (32 - 3)
5)32 - 3 = 29   //  2 * 29
6)2 * 29 = 58

複雑な式であっても括弧と優先順位によって必ず演算される順序は1つに決まります。

その他の演算子に関する優先順位は「演算子の優先順位」を参照して下さい。

サンプルプログラム

では簡単なプログラムで試して見ます。

sample3-1.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>PHPテスト</title>
</head>
<body>

<p>PHPのテストです。</p>

<p>
<?php
echo "5 + 3 * 4 = ", 5 + 3 * 4, '<br />';
echo "(5 + 3) * 4 = ", (5 + 3) * 4;
?>
</p>

</body>
</html>

上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。

演算子の優先順位

PHP入門の他の記事を見てみる

( Written by Tatsuo Ikura )