演算子
演算子とは与えられたオペランド(式)を対象に評価を行い、結果を返す動作を提供します。また、ものによってはそれ以外の副作用を生じるものがあります。ABでは下記の演算子が利用できます。
代入演算子
左辺の値を右辺で与えられた値にする副作用を持ちます。式の結果の参照は不可能です。
A = B '単純代入 A *= B '乗算代入 A /= B '除算代入 A \= B '整数除算代入 A mod= B '乗除代入 A += B '加算代入 A -= B '減算代入 A <<= B '左シフト代入 A >>= B '右シフト代入 A and= B '論理積代入 A or= B '論理和代入 A xor= B '排他的論理和代入
例
A = B
B式の演算結果がAの型に暗黙的にキャストされ(キャストの種類によっては警告・エラーになる場合があります)、Aに代入されます。
その他の代入演算子の例を挙げてみます。
A and= B
このコードは、Aが一度しか参照されない点を除き、下記のコードと同等の意味になります。
A = A and B
インクリメント・デクリメント演算子
A++ 'インクリメント A-- 'デクリメント
Aが数値型のとき、インクリメント演算子は値を1増やし、デクリメント演算子は値を1減らす副作用を持ちます。現在のところ式の結果を使用することはできません。
New/Delete演算子
New T Delete obj
Tには型(現在クラスのみ)を指定します。指定された型のインスタンスをヒープに生成し、Tが参照型の場合、それへの参照を結果として返します。
Deleteは互換性のためのみに存在します。
キャスト演算子
A As B
Bには型名を指定します。AはBの型にキャストされます。
算術演算子
A ^ B '指数演算 - A 'マイナス符号 A * B '乗算 A / B '除算 A \ B '整数除算 A mod B '乗除演算 A + B '加算 A - B '減算 A >> B '右シフト A << B '左シフト
優先順位は上に位置するものほど高くなっています。ただし、「乗算・除算・整数除算」、「加算・減算」、「右シフト・左シフト」の優先順位は同一です。同一優先順位の演算子が一つの式に複数存在するときは、式は左から右へ順に評価されます。
比較演算子
A = B 'AとBは等しい A <> B 'AとBは等しくない A < B 'AはB未満 A > B 'AはBより大きい A <= B 'AはB以上 A >= B 'AはB以下
条件が一致したときは "-1" が、一致しなかったときは "0" が返ります。
論理演算子
Not A '論理否定 A and B '論理積 A or B '論理積 A xor B '排他的論理和
優先順位は上に位置するものほど高くなっています。なお、ビット演算子としても機能します。
全体の優先順位
優先順位はNew演算子、キャスト演算子、算術演算子、関係演算子、論理演算子、代入演算子及びインクリメント・デクリメント演算子の順になります。
結合規則
ABの式は左結合です。同一優先順位の演算子が一つの式に複数存在するときは、式は左から右へ順に評価されます。式の一部を他の部分より優先的に評価する場合は、括弧を使います。下記に例を示します。
Print 128/32/4 Print 128 / (32/4)
一番目の式は左から順に式が評価されるため、"128÷32" の結果から4を割ります。二番目の式は括弧内の "32÷4" が優先的に評価され、その結果で128を割ります。