演算子

演算子

演算子の種類

・整数演算を行う演算子には「整数演算子」、実数演算を行う演算子には「実数演算子」と記載している。
・論理演算子は、演算結果が正しい場合整数1を、正しくない場合整数0を返す。
・ショートカット付き論理演算子は、第1項の評価結果で演算結果が決定される場合、第2項の評価をスキップする。

() 括弧
[] 配列参照
-(単項) 符号反転
加算,文字列の結合
ー(2項) 減算
乗算,文字列の繰り返し
除算(実数演算子)
DIV 整数除算(整数演算子)
MOD 剰余(整数演算子)
<< 左シフト(整数演算子)
>> 右シフト(符号つき、整数演算子)
<<< 左シフト(整数演算子)
>>> 右シフト(符号なし、整数演算子)
<<+ 左ローテート(整数演算子)
>>+ 右ローテート(整数演算子)
AND 論理積(整数演算子)
OR 論理和(整数演算子)
XOR 排他的論理和(整数演算子)
NOT ビット反転(整数演算子)
== 等しい(論理演算子)
!= 等しくない(論理演算子)
< 大きい(論理演算子)
> 小さい(論理演算子)
<= 以上(論理演算子)
>= 以下(論理演算子)
&& ショートカット付き論理積(論理演算子)
|| ショートカット付き論理和(論理演算子)
反転(論理演算子)

演算子の優先度

演算子の優先度は次の通り。

() []
-(単項) NOT !
* / DIV MOD
+ -(2項)
<< >> <<< >>> <<+ >>+
== != < <= > >=
AND
OR XOR
&&
||

(式)

括弧内の式の演算優先度を上げる

配列[式 [,…]]

配列要素を参照する

・[]内の式の数は1個、もしくは配列の次元数のいずれか

- 数

数の正負を反転させる

数 + 数

2つの数を足す

文字列 + 文字列

2つの文字列を結合する

数 - 数

左の数から右の数を引く

数 * 数

左の数に右の数をかける

文字列 * 整数

文字列を右の数だけくりかえす

数 / 数

左の数を右の数で割る

・右の数が0の場合エラー

整数 DIV 整数

左の数を右の数で割る

・/と異なり、結果は必ず整数になる
・右の数が0の場合エラー

A=201 DIV 5

整数 MOD 整数

左の数を右の数で割った余り

・右の数が0の場合エラー

A=201 MOD 5

整数 AND 整数

2つの整数の論理積

A=200 AND &HE7

整数 OR 整数

2つ整数の論理和

A=128 OR &HA3

整数 XOR 整数

2つの整数の排他的論理和

A=100 XOR &H4C

整数 << 整数

左の数を右のビット分左シフトする

・1ビット左シフトを行うと整数を2倍した事になる

A=100 << 2

整数 >> 整数

左の数を右のビット分右シフトする(符号つき)

・1ビット右シフトを行うと整数を1/2にした事になる
・符号が考慮される。符号ビット(ビット31)は変化しない。ビット30はビット31がコピーされる。

A=100 >> 2
B=-10 >> 1

整数 <<< 整数

左の数を右のビット分左シフトする

・1ビット左シフトを行うと整数を2倍した事になる
・<<と全く同じ動作をする

A=100 <<< 2

整数 >>> 整数

左の数を右のビット分右シフトする(符号なし)

・1ビット右シフトを行うと整数を1/2にした事になる
・>>と異なり、符号が考慮されない。

A=100 >>> 2
B=-10 >>> 1

整数 <<+ 整数

左の数を右のビット分左にローテートする

・シフトと異なり、ビット31から押し出されたビットはビット0側にコピーされる。

A= HEX$(&HFF00FF00 <<+ 8)

整数 >>+ 整数

左の数を右のビット分右にローテートする

・シフトと異なり、ビット0から押し出されたビットはビット31側にコピーされる。

A= HEX$(&H00FF00FF >>+ 8)

NOT 整数

数のビットを反転させる

数 == 数

左右の数が等しい場合に1、等しくない場合0を返す

文字列 == 文字列

左右の文字列の内容が等しい場合に1、等しくない場合0を返す

数 != 数

左右の数が等しくない場合に1、等しい場合0を返す

文字列 != 文字列

左右の文字列の内容が等しくない場合に1、等しい場合0を返す

数 < 数

左の数が右の数より小さい場合1、それ以外の場合0を返す

文字列 < 文字列

左の文字列が右の文字列より辞書並びで前に来れば1、それ以外の場合は0を返す

数 > 数

左の数が右の数より大きい場合1、それ以外の場合0を返す

文字列 > 文字列

左の文字列が右の文字列より辞書並びで後に来れば1、それ以外の場合は0を返す

数 <= 数

左の数が右の数と等しいか小さい場合1、それ以外の場合0を返す

文字列 <= 文字列

左の文字列が右の文字列と等しいか辞書並びで前に来れば1、それ以外の場合は0を返す

数 >= 数

左の数が右の数と等しいか大きい場合1、それ以外の場合0を返す

文字列 >= 文字列

左の文字列が右の文字列と等しいか辞書並びで後に来れば1、それ以外の場合は0を返す

式 && 式

2つの式の計算結果がいずれも真(!=0)だった場合1、それ以外の場合0を返す

・左の式が偽(0)の場合、右の式の計算は省略されて即座に0を返す

式 || 式

2つの式の計算結果のどちらかが真(!=0)だった場合1、それ以外の場合0を返す

・左の式が真(!=0)の場合、右の式の計算は省略されて即座に1を返す

! 式

式の計算結果が真(!=0)だった場合0、偽(0)だった場合1を返す