目次→
演算子→
短絡演算子→
Operator ORELSE (Short Circuit Inclusive Disjunction)←オリジナル・サイト
2つの数値の、短絡 OR (排他的論理和) を返します。
構文:
用法:
result = lhs OrElse rhs
パラメタ:
lhs
式の左側。
T1
数値型か論理型のいずれか。
rhs
式の右側。
T2
数値型か論理型のいずれか。
Ret
数値型か論理型 (T1 と T2) によって変わる
戻り値:
二つの演算対象の、短絡 or (排他的論理和) を返します。
記述:
この演算子は、式の左側を評価します。
結果がゼロでなければ、すぐに、-1 (真)、を返します。
左側の結果がゼロであれば、右側か評価されます。そして、それの必然的な結果が返されます。
ゼロ以外の値のときは -1 (真)、ゼロのときは 0 (偽)を返します。
(ブーリアンの整数への変換では、論理値の誤は 整数値 0 に、真は -1 になります)
下の真理値表が、短絡 or 操作のすべての組み合わせを示します。'-' は、演算対象が評価されないことを示します。
| Lhs の値 |
Rhs の値 |
結果 |
| 0 |
0 |
0 |
| 0 |
nonzero |
-1 |
| nonzero |
(評価対象外) |
-1 |
OrElse は以下と同等です:
Iif( Lhs = 0, Rhs <> 0 , -1 )
短絡が実行されます。すなわち、結果を計算するのに必要な式だけが評価されます。
最初に、左側の
lhs が評価され、それがゼロ(false)と評価された場合にのみ、右側の
rhs も評価されます。
左側の評価
lhs がゼロ以外(true)を返す場合、その時点で全体的な条件が真であることがわかっているので、右側の
rhs は評価されません(スキップされます)。
戻り型は、いつも
Integer で、値は、
0 か
-1 で、それぞれ偽か真を示します。
左側と右側の両方が
Boolean 型の場合だけ、戻り型も
Boolean です。
この演算子を、ユーザ定義型のために、多重定義することができません。
例:
'' ORELSE演算子を使って、
'' 値が範囲外かどうかを判定する
Dim As Integer n
Input "1から10までの数字を入力してください: ", n
Function test(ByVal n As Integer) As Integer
Print "式が評価された"
Return n
End Function
'' n が [1, 10] の範囲内にある場合だけ値を表示する
If test(n) < 1 OrElse test(n) > 10 Then '' n < 1 の場合、2番目の式は評価されない
Print " => 範囲外"
Else
Print " => n ="; n
End If
Sleep
'' 渡辺変更:ORELSE演算子を使って、
'' 値が範囲外かどうかを判定する
Dim As Integer n
Do
Input "1から10までの数字を入力してください。それ以外だと終了: ", n
'' n が [1, 10] の範囲内にある場合だけ値を表示する
If n < 1 OrElse n > 10 Then '' n < 1 の場合、2番目の式は評価されない
Print "数値が評価された"
Print " => 範囲外! 終了します"
Sleep
Exit Do
Else
Print "数値が評価された"
Print " => n ="; n
Print
End If
Loop
' 2つの数値に対して ORELSE 演算子を使います
Dim As Integer numeric_value1, numeric_value2
numeric_value1 = 15
numeric_value2 = 30
'結果 = -1
Print numeric_value1 ORELSE numeric_value2
Sleep
QBからの違い:
参照: