Or 演算子 (Visual Basic)
2 つのブール (Boolean) 式の論理和を求めます。または、2 つの数式のビットごとの論理和を求めます。
result = expression1 Or expression2
指定項目
result
必ず指定します。任意のブール型 (Boolean) または数式を指定します。Boolean 式の比較の場合、result は 2 つの Boolean 値の包括的論理和になります。ビットごとの演算の場合、result は 2 つの数式のビットパターンの、ビットごとの包括的論理和を表す数値になります。expression1
必ず指定します。任意のブール型 (Boolean) または数式を指定します。expression2
必ず指定します。任意のブール型 (Boolean) または数式を指定します。
解説
Boolean 値の比較の場合、result が False になるのは、expression1 と expression2 がどちらも False に評価される場合だけです。次の表は、2 つの式の値と演算結果 result の値の対応を示しています。
expression1 の値 |
expression2 の値 |
result の値 |
---|---|---|
True |
True |
True |
True |
False |
True |
False |
True |
True |
False |
False |
False |
[!メモ]
Boolean 式の比較において、Or 演算子は必ず両方の式を評価します。これは式がプロシージャ呼び出しを実行する場合も同じです。OrElse 演算子 (Visual Basic) はショートサーキットを実行します。つまり、expression1 が True であれば、expression2 は評価されません。
ビットごとの演算の場合、Or 演算子は、2 つの数式内の対応するビットどうしの、ビット単位の比較を行います。次の表に従って、result 内の対応するビットがセットされます。
expression1 のビット |
expression2 のビット |
result 内のビット |
---|---|---|
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
[!メモ]
論理/ビット処理演算子は他の算術演算子や関係演算子より優先順位が低いため、ビットごとの演算は、正確に実行されるようにかっこで囲む必要があります。
データ型
オペランドの一方が Boolean 式で、もう一方が数式の場合、Visual Basic は Boolean 式を数値 (True は -1、False は 0) に変換してから、ビットごとの演算を実行します。
Boolean 式の比較の場合、結果のデータ型は Boolean になります。ビットごとの比較の場合、結果のデータ型は expression1 と expression2 のデータ型に対して適切な数値型になります。「演算子の結果のデータ型 (Visual Basic)」の「リレーショナルおよびビットごとの比較」の表を参照してください。
オーバーロード
Or 演算子はオーバーロードできます。つまり、オペランドがクラスや構造体を型として持つ場合に、演算子の動作をそのクラスや構造体で再定義できるという意味です。このようなクラスまたは構造体でこの演算子を使用している場合、再定義された動作を確認してください。詳細については、「演算子プロシージャ (Visual Basic)」を参照してください。
使用例
Or 演算子を使って 2 つの式の包括的論理和を求める例を次に示します。結果は、2 つの式のどちらかが True かどうかを表す Boolean 値です。
Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b Or b > c
secondCheck = b > a Or b > c
thirdCheck = b > a Or c > b
先の例では、True、True、False という結果がそれぞれ生成されます。
Or 演算子を使って、2 つの数式のビットごとの包括的論理和を求める例を次に示します。オペランド内の、対応するビットのいずれかが 1 にセットされている場合は、結果パターンにビットがセットされます。
Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstPattern, secondPattern, thirdPattern As Integer
firstPattern = (a Or b)
secondPattern = (a Or c)
thirdPattern = (b Or c)
先の例では、結果はそれぞれ 10、14、14 になります。