SELECT CASE
来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgSelectcase 最后更新: 2021-09-28
条件语句块。
语法
Select Case expression
[Case expressionlist]
[statements]
[Case Else]
[statements]
End Select或(优化的纯整数形式):
Select Case As Const integer_expression
[Case constant | enumeration]
[statements]
[Case Else]
[statements]
End Select说明
Select Case 根据表达式的值执行特定代码。表达式被求值一次,然后按顺序与每个 Case 比较。匹配的 Case 分支中的代码被执行,程序跳转到 End Select 之后。
Case Else匹配任何尚未匹配的情况。- 如果没有
Case匹配且没有Case Else,则跳过整个块。 Exit Select可用于退出块。
C 用户注意: Select Case 的工作方式类似于所有 case 末尾都有 break 的 switch。没有穿透。
除整数类型外,第一种语法还支持浮点和字符串表达式。
表达式列表语法
{ expression | expression To expression | Is relational_operator expression } [, ...]expr— 相等匹配。expr1 To expr2— 范围匹配(含两端)。Is relop expr— 关系匹配(=、>、<、<>、<=、>=)。- 每个
Case可以有多个检查,用逗号分隔。
示例:
vb
Case 1 ' constant
Case 5.4 To 10.1 ' range
Case Is > 3 ' relational
Case 1, 3, 5, 7 To 9 ' set of values
Case x ' variable valueSelect Case As Const
如果使用 As Const,则 Case 列表中只支持整数常量和枚举值。支持 "To" 范围,但不支持 "Is" 关系运算符。会创建一个跳转表,使该形式比普通 Select Case 更快。
值的范围有限制:转换为 uinteger 后,最大值 ≤ 最小值 + 8191。
示例
vb
Dim choice As Integer
Input "Choose a number between 1 and 10: "; choice
Select Case As Const choice
Case 1
Print "number is 1"
Case 2
Print "number is 2"
Case 3, 4
Print "number is 3 or 4"
Case 5 To 10
Print "number is in the range of 5 to 10"
Case Else
Print "number is outside the 1-10 range"
End Select方言差异
- 在
-lang qb和-lang fblite中,在Select..End Select块内声明的变量具有过程级作用域。 - 在
-lang fb和-lang deprecated中,变量仅在块内可见。
与 QB 的区别
Select Case As Const在 QB 中不存在。- 在
expr1 To expr2case 中,QB 始终会求值两个表达式,即使 expr1 大于原始值。