GustFront (2.1.1) | 2013-05-05 22:09 |
MortalRoar (2.1.1) | 2014-03-05 22:16 |
RVIILib (2.1.1) | 2013-05-05 22:10 |
StdAreaEngine (2.1.1) | 2013-05-05 22:10 |
StdUtilLib (2.1.1) | 2013-05-05 22:11 |
StdWindow (2.1.1) | 2013-05-05 22:11 |
順位 | 記号 | 意味 |
1 | . | メンバ |
[] | 添え字 | |
() | 呼び出し | |
2 | - | 単項マイナス |
3 | * | 乗算 |
/ | 除算 | |
% | 剰余 | |
4 | + | 加算 |
- | 減算 | |
5 | << | 左シフト |
>> | 右シフト | |
6 | = | 等値 |
<> | 非等値 | |
< | 小なり | |
> | 大なり | |
<= | 以下 | |
>= | 以上 | |
7 | Not | 否定 |
8 | And | 論理積 |
AndAlso | 論理積 | |
9 | Or | 論理和 |
OrElse | 論理和 | |
10 | Xor | 排他的論理和 |
11 | = | 代入 |
*= | 乗算代入 | |
/= | 除算代入 | |
%= | 剰余代入 | |
+= | 加算代入 | |
-= | 減算代入 | |
>>= | 右シフト代入 | |
<<= | 左シフト代入 |
順位の高い演算子ほど、先に適用されます。
左右が何であるかによって演算子の動作が変わってきますが、どんな場合でも、右オペランドは左オペランドの一部です。
左がモジュールやプラグインのエイリアスの場合、プロシージャやコマンドが呼び出されます。定数の場合は特に動作はありません。
左が何かの値の場合、標準コマンドの GetMember が呼び出されます。
左が名前空間の場合、型名に達するまで連結され、最終的にその型を表すオブジェクトになります。このオブジェクトは標準コマンドの CreateInstance などで使用できます。
オペランドが持つ Default という名前のプロパティにアクセスし、値を取得します。代入の左辺値の場合、設定します。
標準リストおよび標準ディクショナリの場合、Default プロパティは Item プロパティと同じです。
オペランドとして指定されたプロシージャ、メソッドまたはコマンドを呼び出します。結果は呼び出したものに依存します。
演算の優先順位を変える場合にも使用します。
- (unary) * / % + -
加算を除き、少なくともどちらか一方が数値でなければなりません。加算の場合で、少なくとも一方が文字列なら、文字列の連結を行ないます。
数値の場合で、最初のオペランドと 2 番目のオペランドの型が異なるときは、表現できる幅の大きいほうに変換されます。変換できない場合は例外がスローされます。数値の型を、表現できる幅の大きい順序に並べると次の通りです。
Double, Single, Decimal, Int64, Int32, Int16, Byte
このような拡大変換は、他の演算でも必要に応じて行なわれます。
算術演算子の結果は数値、または文字列になります。演算の結果オーバーフローが生じたり、整数 0 による除算が行なわれると、該当する例外がスローされます。
<< >>
最初のオペランドは整数でなければなりません。2 番目のオペランドは Int32 に変換されます。
右シフトは算術シフトであり、符号が保存されます。一方、左シフトは論理シフトであり、符号は保存されません。
= <> < > <= >=
どちらか一方が数値の場合、もう一方も数値として大小を比較します。両方とも数値でない場合は、大小を比較可能な型であれば比較します。比較不可能な型で、等価でない場合は、最初のオペランドのほうが小さいものとして扱います。
Nothing は Nothing 以外と等しくなく、また全ての値より小さいものとして扱います。
結果はブール値になります。
Not And Or Xor
オペランドはどちらも整数、またはどちらともブール値でなければなりません。
結果は、オペランドが整数ならば整数、ブール値ならばブール値になります。
AndAlso OrElse
オペランドはどちらもブール値でなければなりません。
これらの演算子の結果自体は、And および Or を用いた場合と一致します。ただし AndAlso と OrElse は、最初のオペランドがそれぞれ False と True の場合、2 番目のオペランドを評価せずに、それぞれ False と True を返します。
実際には AndAlso と OrElse は演算を行なうものではなく、次の式と同じ事をするものです。
If f() = False Then x = False Else x = g() 'x = f() AndAlso g() If f() = True Then y = True Else y = g() 'y = f() OrElse g()
このことは特に、f 次第では g を処理してはいけない場合に有効です。
結果はブール値になります。
= *= /= %= += -= >>= <<=
いずれも左辺には、変数、設定プロパティまたはフィールドを指定する必要があります。
実際には全てが単純代入に変換されます。例えば以下の 2 行のコードは等価です。
a += b a = a + b
加算代入演算子以外でも同様です。a は 2 回評価されます。したがって a に副作用のある式が含まれている場合、想定外の動作をする恐れがあります。
[PageInfo]
LastUpdate: 2013-04-28 20:33:35, ModifiedBy: kento_kaimoku
[Permissions]
view:all, edit:members, delete/config:admins