FreeBASIC マニュアルのトップに戻る

FreeBASIC OpOrElse

目次演算子短絡演算子Operator ORELSE (Short Circuit Inclusive Disjunction)←オリジナル・サイト

演算子 ORELSE (短絡排他的論理和) 左にメニュー・フレームの表示がないなら、ここをクリック下さい


2つの数値の、短絡 OR (排他的論理和) を返します。

構文:
declare operator OrElse ( byref lhs as T1, byref rhs as T2 ) as Ret

用法:
result = lhs OrElse rhs

パラメタ:
lhs
式の左側。
T1
数値型か論理型のいずれか。
rhs
式の右側。
T2
数値型か論理型のいずれか。
Ret
数値型か論理型 (T1T2) によって変わる

戻り値:
二つの演算対象の、短絡 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からの違い:

参照:
短絡演算子 に戻る
演算子 に戻る
←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2026-02-17 16:08:09
日本語翻訳:WATANABE Makoto、原文著作者:YetiFoot

ホームページのトップに戻る

表示-非営利-継承