Operator ANDALSO(短路合取)
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgOpAndAlso
- 最后更新: 2026-02-17
返回两个数值的短路与(合取)。
语法
declare operator AndAlso ( byref lhs as T1, byref rhs as T2 ) as Ret用法
result = lhs AndAlso rhs参数
lhs
左侧表达式。
T1
任何数值或布尔类型。
rhs
右侧表达式。
T2
任何数值或布尔类型。
Ret
数值或布尔类型(随 T1 和 T2 变化)。
返回值
返回两个操作数的短路与(合取)。
描述
此运算符对左侧表达式进行求值。如果结果为零,则立即返回零。如果结果非零,则对右侧进行求值,并返回其逻辑结果。
(对于布尔值转换为整数,false 或 true 的布尔值变为 0 或 -1 的整数值)
下面的真值表演示了短路与运算的所有组合,"-" 表示该操作数不被求值。
| 左操作数值 | 右操作数值 | 结果 |
|---|---|---|
| 0 | (不求值) | 0 |
| 非零 | 0 | 0 |
| 非零 | 非零 | -1 |
AndAlso 等价于:
Iif( Lhs <> 0, Rhs <> 0, 0 )
执行短路求值——只对计算结果所需的表达式进行求值。首先对左侧 lhs 求值,只有当它的值为非零(真)时,才对右侧 rhs 也进行求值。如果左侧求值 lhs 返回零(假),则此时已知整体条件为假,因此不对右侧 rhs 进行求值(跳过)。
返回类型几乎总是 Integer,值为 0 或 -1,分别表示 false 和 true。但如果左右操作数类型都是 Boolean,则返回类型也是 Boolean。
此运算符不能为用户定义类型重载。
示例
start GeSHi
vb
'' Using the ANDALSO operator to guard against array access
'' when the index is out of range
Dim As Integer isprime(1 To 10) = { _
_ ' 1 2 3 4 5 6 7 8 9 10 (2, 3, 5 and 7 are the only prime numbers)
0, 1, 1, 0, 1, 0, 1, 0, 0, 0 _
}
Dim As Integer n
Input "Enter a number between 1 and 10: ", n
'' isprime() array will only be accessed if n is in range
If (n >= 1 And n <= 10) AndAlso isprime(n) Then
Print "n is prime"
Else
Print "n is not prime, or out of range"
End If
Sleepend GeSHi
与 QB 的差异
- 此运算符在 QB 中不可用。
参见
OrElseAnd- 运算符真值表
返回 目录