运算符 ORELSE(短路包含析取)
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgOpOrElse
- 最后更新: 2026-02-17
返回两个数值的短路或(包含析取)
语法
` declare operator OrElse ( byref lhs as T1, byref rhs as T2 ) as Ret
`
用法
` result = lhs OrElse rhs
`
参数
lhs
左侧表达式。
T1
任意数值或布尔类型。
rhs
右侧表达式。
T2
任意数值或布尔类型。
Ret
数值或布尔类型(随 T1 和 T2 变化)。
返回值
返回两个操作数的短路或(包含析取)结果。
描述
该运算符先对左侧表达式求值。如果结果非零,则立即返回 -1(true)。如果结果为零,则对右侧表达式求值,并返回其逻辑结果——非零值返回 -1(true),零值返回 0(false)。
(对于布尔值转换为整数,false 或 true 的布尔值变为 0 或 -1 的整数值)
下方真值表展示了短路或运算的所有组合,"-"表示该操作数不被求值。
| 左侧值 | 右侧值 | 结果 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 非零 | -1 |
| 非零 | (不求值) | -1 |
OrElse 等价于:
Iif( Lhs = 0, Rhs <> 0 , -1 )
执行短路求值——只对计算结果所需的表达式求值。先对左侧 lhs 求值,只有当其求值为零(false)时才对右侧 rhs 求值。如果左侧 lhs 求值结果非零(true),则在该点已知整体条件为 true,因此不对右侧 rhs 求值(跳过)。
返回类型几乎总是 Integer,值为 0 或 -1,分别表示 false 和 true。只有当左侧和右侧类型都是 Boolean 时,返回类型才也是 Boolean。
该运算符不能为用户自定义类型重载。
示例
start GeSHi
vb
'' Using the ORELSE operator to test
'' if a value is out of range
Dim As Integer n
Input "Enter a number between 1 and 10: ", n
Function test(ByVal n As Integer) As Integer
Print "expression evaluated"
Return n
End Function
'' print value only if n is in range [1, 10]
If test(n) `< 1 OrElse test(n) >` 10 Then '' if n < 1, second expression is not evaluated
Print " => out of range"
Else
Print " => n ="; n
End If
Sleepend GeSHi
与 QB 的差异
- 该运算符在 QB 中不可用。
参见
AndAlsoOr- 运算符真值表
返回 目录