VB中 select case 结构中is的问题?

例子
Dim x As Single, y As Single
x = Val(InputBox("X"))
Select Case x
Case Is >= 10
y = x ^ 2 + 1
Case Is >= -5
y = 0
Case Is < -5
y = x ^ 2 - 1
End Select
Print "x="; x, " "; "y="; y
我在修改Case Is >= 10变成case x>=10这两者有什么不同,为什么结果会不一样?

要理解该语句格式:
Select Case 表达式
Case 表达式列表1
语句组1
Case 表达式列表2
语句组2
Case 表达式列表3
语句组3
......
Case 表达式列表n
语句组n
Case Else
语句组n+1
End Select
注意:表达式的概念,可以是一个运算的式子,当然最简单的式子是一个变量或常量
执行过程如下:
首先:检查[表达式] 的值是否等于 “表达式列表1”的某个值 ,若相等,就执行 语句组1,然后结束该语句。如果不相等,就检查检查[表达式] 的值是否等于 “表达式列表2”的某个值,若相等,就执行 语句组2,然后结束该语句。如果不相等,就检查检查[表达式] 的值是否等于 “表达式列表3”的某个值,若相等,就执行 语句组3,然后结束该语句。......如果不相等,就检查检查[表达式] 的值是否等于 “表达式列表n”的某个值,若相等,就执行 语句组n,然后结束该语句。如果不相等,就就执行 语句组n+1,然后结束该语句。
在Case 表达式列表1中,允许使用 is 比较预算符的表达式,还允许 类似 1 To 10这样的范围表示等等。
其实:Case 后面的结果是布尔值,如果是True就执行下面的分支语句,如果是False就进入下一Case分支判断。
分析:假设你的x 值为30,因为首先判断 x 满足>=10否,是的就执行 y = x ^ 2 + 1,

当你改成
Case x >= 10的时候,系统最的判断是: x = x >= 10
这左边第1个X就是Select Case X里的X,系统先计算等号右边的式子 x > = 10结果为True,
然后判断 x = True,结果为显然是不等的,在VB里True转换为数字为-1,False转换为数字为0。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-30
Select Case x
Case Is >= 10
y = x ^ 2 + 1
Case Is >= -5
y = 0
Case Is < -5
y = x ^ 2 - 1
End Select

中是x不能用Is的

要用is要改为Select Case is追问

能不能解释一下为什么不能用?

追答

因为CASE的是x值不是is值。

追问

那个 我的例子是正确的
这个我也运行来着也是正确的
但是
Select Case x
Case x >= 10
y = x ^ 2 + 1
Case >= -5
y = 0
Case x < -5
y = x ^ 2 - 1
End Select
这样修改时候就不对了~

第2个回答  2013-07-30
有不同吗?试验过是一样的啊追问

有不同,在case x>= 的情况下,x=0,y=1;正确情况应该是x0,y=0

追答

实际上是这样的,
Select Case x
也就是说 当X 等于下面的 Case Is >= 10中 ( >= 10)的时候做什么。
仔细分析了下。
也就是说 case is >=10 中的 >=10 是个表达式。
整个的意思就是说,当x >=10的时候。

而 case x>=10 的时候,
x>=10也是个表达式,当x是0时,其结果是个false。
那x肯定不等于false。所以进去了此分支。
得到的结果就是 x=0,y=1
(注意点,在vb中 false=0)

综上,IS 和 直接写表达式的区别就是 加上is ,比较的是 Select Case x
中的x 是否符合 is 后面的表示式。
没有加is的时候,是 x和 表达式的结果的比较。 而这个表达式(类似于x>=10)的结果,通常是个true,false。

我个人以前也没有注意到有这个区别,自己试验了下。
刚好也学习了。
希望对你有帮助

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网