IF...THEN
来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgIfthen 最后更新: 2021-09-28
用于条件分支的控制流语句。
语法
单行形式:
If expression Then [statement(s)] [Else [statement(s)]] [End If]多行形式:
If expression Then
[statement(s)]
[ElseIf expression Then]
[statement(s)]
[Else]
[statement(s)]
End If注意: EndIf(不带空格)也支持,以向后兼容 QB。
描述
If...Then 是一种做决定的方式。它仅在条件为真时执行代码,并可以根据更多条件提供替代执行代码。
expression 可以是:
- 条件表达式:
x = 5 - 使用逻辑位运算符的多个条件:
x >= 5 And x <= 10 - 使用短路运算符的多个条件:
y <> 0 AndAlso x \ y = 1 - 任何数值表达式(0 = False,非零 = True)
多行和单行的 If 都可以嵌套。多行语法允许多个 ElseIf(但在 Else 之后不能有)。如果 If 的条件不为真,则依次测试 ElseIf 块的条件。
在 -lang fb 和 -lang fblite 方言中,可以用冒号(:)代替换行符,在单行上构建多行 If 块。
注意: 单行的 If...Goto 语法已弃用,仅为 QB 兼容性而存在。
示例
示例 1: 带多条语句的单行形式
vb
Dim As Double d, r
r = -1
d = 2
If d > 0 Then r = Sqr(d) : Print "square root computed:" Else r = 0 : Print "square root not computed:"
Print r
Sleep示例 2: "猜数字"游戏
vb
Dim As Integer num, guess
Randomize
num = Int(Rnd * 10) + 1
Print "guess the number between 1 and 10 (or CTRL-C to abort)"
Do
Input "Guess"; guess
If guess > 10 OrElse guess < 1 Then
Print "The number can't be greater then 10 or less than 1!"
ElseIf guess > num Then
Print "Too high"
ElseIf guess < num Then
Print "Too low"
Else
Print "Correct!"
Exit Do
End If
Loop
Sleep方言差异
- 在
-lang qb和-lang fblite中,在If..Then块内声明的变量具有过程范围的作用域。 - 在
-lang fb和-lang deprecated中,在If..Then块内声明的变量只在块内可见。 - 在
-lang qb中,如果Then后直接跟着换行符或单行注释,则If将是多行的。 - 在
-lang fb和-lang fblite中,Then后的换行符、注释、冒号或Rem使其变为多行。
与 QB 的差异
- 在 QBASIC 的单行
If中不支持End If。