演算子
MIFEのマクロ記述では以下の演算子がサポートされています。
単項演算子
++ プリインクリメント/ポストインクリメント
ユーザ単純変数にのみ可能(配列変数やシステム変数には不可)
例. @str3[@5++] = @str4[@6++]
-- プリデクリメント/ポストデクリメント
ユーザ単純変数にのみ可能(配列変数やシステム変数には不可)
例. while --@5 > 0
& アドレス演算子
配列変数にのみ可能。通常は関数の引数に使用
例. sprintf(@str4,"%s = %d",&@@str3[@2-16],@5-32)
- ハイフン:2の補数(負の数)
例. if @5 == -2
~ チルド:1の補数(全ビットの反転)
例. @dstat &= ~DTAT_UNDERLINE (下線の消去)
! 論理否定
例. if !jump(0,32)
注意)すべての単項演算子の優先順位は15です。すべての単項演算子は2項演算子よりも優先順位は高くなります。
2項演算子(優先順位)
= 代入(2)
&= ビット論理積と代入(2)
|= ビット論理和と代入(2)
^= ビット排他的論理和と代入(2)
<<= ビット左シフトと代入(2)
>>= ビット右シフトと代入(2)
%= 剰余と代入(2)
*= 乗算と代入(2)
/= 除算と代入(2)
+= 加算と代入(2)
-= 減算と代入(2)
&& 論理積(3)
|| 論理和(3)
>= 関係演算:以上(4)
<= 関係演算:以下(4)
== 関係演算:等しい(4)
! = 関係演算:等しくない(4)
> 関係演算:より大きい(4)
< 関係演算:より小さい(4)
+ 加算(5)
- 減算(5)
* 乗算(7)
/ 除算(7)
% 剰余(9)
<< ビット左シフト(10)
>> ビット右シフト(10)
& ビット論理積(11)
| ビット論理和(11)
^ ビット排他的論理和(11)
注意)同じ2項演算子(または優先順位の同じ2項演算子)では、原則として先に現われた方(左側の方)の演算子が先に実行されます。ただし、代入演算子の場合だけはこの逆で、後に現われた方(右側の方)の演算子が先に実行されます。注意してください。
例1. @9=@1-@2-@3-@4 ----> @9=((@1-@2)-@3)-@4 と同じ
例2. @6=@7=@8=0 ---> @6=(@7=(@8=0)) と同じ
なお、演算子の優先順位はC言語と全く同じではありません。ビット演算子の優先順位が高いことに注意してください。1つの式の中に複数の演算子を記述する場合には、できるだけ優先させたい演算部分を
( と ) で囲って記述してください。
リンク
|