解説
プログラムでは、計算を行う記号を「演算子」(えんざんし)と呼び、加算を表わす「+(プラス)」や、減算を表わす「-(マイナス)」など、様々なものがあります。そして、それぞれに優先順位が設けられています。詳しくはプログラミング言語の仕様書やマニュアルに記載されています。
上 * 乗算 / 除算(乗算と除算の優先順位は同列) ↑ ↓ 下 + 加算 - 減算(加算と減算の優先順位は同列)
プログラムでは、ソースコード(人間が読めるように書いたプログラムの文章)を、上から下の行へ、そして同じ行では左から右へと順番に処理していきます。同じ優先順位の場合は、このルールの通り、左から右へと処理が進みます。
しかし、処理が左から右に順番に進まない時があります。それは、優先順位の違う演算子が混在している場合です。
ここでは四則演算を例にして、優先順位の違う演算子が混在した際の処理の流れを説明します。
a = 1 + 2 * 3 + 4;
1番目に行われる処理(乗算) a = 1 + 2 * 3 + 4; ~~~~~~~ ↓ a = 1 + 6 + 4; ~~~~~~~
2番目に行われる処理(左側の加算) a = 1 + 6 + 4; ~~~~~~~ ↓ a = 7 + 4; ~~~~~~~
3番目に行われる処理(加算) a = 7 + 4; ~~~~~~~ ↓ a = 11; ~~~~~~~
4番目に行われる処理(変数aに値を代入) a = 11;
この優先順位を変更したい場合は、丸括弧を使います。
a = (1 + (2 + 3)) * 4;
1番目に行われる処理(一番内側の丸括弧の処理) a = (1 + (2 + 3)) * 4; ~~~~~~~~ ↓ a = (1 + 5 ) * 4; ~~~~~~~~
2番目に行われる処理(丸括弧の処理) a = (1 + 5) * 4; ~~~~~~~~~ ↓ a = 6 * 4; ~~~~~~~~~
3番目に行われる処理(乗算) a = 6 * 4; ~~~~~~~ ↓ a = 24;
4番目に行われる処理(変数aに値を代入) a = 24;
サンプル
演算子と計算の順序を、JavaScriptで簡単に書いてみます。
<html> <head> <title>「演算子と計算の順序」のサンプル</title> <script type="text/javascript"> var a; a = 1 + 2 * 3 + 4; document.writeln("a " + a + "<br>"); // 変数aの値を出力 a = (1 + (2 + 3)) * 4; document.writeln("a " + a + "<br>"); // 変数aの値を出力 </script> </head> </html>
a 11 a 24