Skip to content

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

参见

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系