演算子の優先順位

演算子の優先順位

優先順位高

( )         ! *、 /、 MOD +、 - >、 <、 =、 >=、 <=、 <> AND OR、 XOR

優先順位低

優先順位が高いほうが先に計算される

上の並びを参照すると、
+よりも*のほうが優先度が高く設定されています。
つまり、1 + 10 * 5とあった場合は、
答えは1 + 10 = 11、 11 × 5 =55とはならずに、
10 × 5 = 50、50 + 1 = 51となります。

各説明と共にサンプルを見てみましょう

//ORはどちらかがTRUEならばTRUEを返す、ANDは両方TRUEならばTRUEを返す
//ANDが先に計算されるのでFALSE(=0)が返る
PRINT FALSE AND TRUE OR FALSE

//XORは片方がTRUE、片方がFALSEの時にTRUEを返す、両方TRUEや両方FALSEはFALSEを返す
//ANDが先に計算されるのでTRUE(=1)が返る
PRINT FALSE XOR TRUE AND TRUE

//>、<は大なり小なり、=は等価、>=、<=は以上、以下、<>は不等価
//>が最初に計算されるのでFALSEが返る
PRINT 0.1 > 1 = TRUE

//+は加算、-は減算、*は乗算、/は割り算、MODは剰余算
//*が+や-より優先されるため答えは51
PRINT 1 + 10 * 5

//!は否定、TRUEはFALSEに、FALSEはTRUEになる
//()は最優先
//よって下記はFalseとなる
PRINT !(4 MOD 3 = 1)

分かりにくくなるので()を使用しよう

プログラミングを書いているときに上記の優先順位を気にするよりは
()を使用して、明示的に優先度を表現するほうが推奨されます。
優先順位は誰もが暗記しているわけではないですし、括弧がないと
どこから計算されるかパッと見、分からず、
混乱してしまいます。

PRINT 10 MOD 2 * 3 + 90 / 3 > 89 <= 9 > 6
上記のようにあると、一瞬たじろいでしまいます。
バグがあっても何がどうなればよいのか、
確かめようもありません。

キチンと括弧を付けることで少なくともどういう順番で
計算されるのか想定可能ですし、
設計書があればその仕様通り動作するかも
検証できます。
括弧を付けたスクリプトを見てみましょう。


続きは、ログインもしくは、登録してください



このページの先頭へ