Visual Basic程序设计教程(第3版)
上QQ阅读APP看书,第一时间看更新

4.2 条件表达式

在条件语句中作为判断依据的表达式称为“条件表达式”,条件表达式的取值为布尔值:真(True)或假(False)。在VB中,True的值等于-1,False的值等于0。根据“条件”的简单或者复杂程度,条件表达式可以分为两类:关系表达式和布尔表达式。

4.2.1 关系运算符与关系表达式

关系表达式是指用关系运算符将两个表达式连接起来的式子(例如a+b>0),关系运算符又称比较运算符,用来对两个表达式的值进行比较,比较的结果是一个布尔值(True或False),这个结果就是关系表达式的值。

1.关系运算符

VB提供的关系运算符有以下六种,如表4-1所示。

表4-1 关系运算符

说明:

1)关系运算符两侧可以是数值表达式、字符型表达式或日期型表达式,也可以是作为表达式特例的常量、变量或函数,但其两侧的数据类型必须完全一致。

2)关系运算符的运算级别相同。

2.关系表达式

关系表达式的格式为

<表达式1><关系运算符><表达式2>[<关系运算符><表达式3>…]

说明:

1)关系表达式的运算次序为:先分别求出关系运算符两侧表达式的值,然后再把二者进行比较,二者的关系若与关系运算符指示的一样,则关系运算的结果为真True,否则为假False。

2)数值型数据按其数值大小进行比较。

3)日期型数据将日期看成“yyyymmdd”的8位整数,按数值大小比较。

4)字符型数据按其ASCII码值进行比较。在比较两个字符串时,首先比较两个字符串的第一个字符,其中ASCII码值较大的字符所在的字符串大。如果第一个字符相同,则比较第二个,…,依此类推。常见字符值的大小如下:

"空格"<"0"<…<"9"<"A"<…<"Z"<"a"<…<"z"<"任何汉字"

5)不要对单精度数或双精度数进行等于“=”比较,例如:1.0/3.0*3.0=1.0。

在数学上该表达式为恒等式。但在计算机上运算时,由于浮点数的误差,将造成不相等。可以把上式改为只要它们小于一个很小的数时(这里是10–5),就认为它们相等:

Abs(1.0/3.0*3.0-1.0)<1E-5' Abs()为求绝对值函数

6)数学不等式:a≤x≤b,在VB中不能写成a<=x<=b。因为,令x=5,不满足2≤x≤3,但在VB中2<=x<=3却是真(True)的。这是由于在VB中,2<=x<=3相当于(2<=x)<=3。

4.2.2 布尔运算符与布尔表达式

对于较为复杂的条件,必须使用布尔表达式。布尔表达式是指用布尔运算符连接若干关系表达式或布尔值而成的式子。如不等式:a≤x≤b可以表示为:a<=x And x<=b。布尔表达式的值也是一个布尔值。VB提供的布尔运算符有:And、Or、Not、Xor、Eqv、Imp六种,其中常用的为前三种,如表4-2所示。

表4-2 布尔运算符

说明:

1)布尔运算符两侧若有数值数据出现,则将数值数据转换为二进制数(补码形式)进行按位运算。此时,1为真,0为假。

2)布尔运算真值表如表4-3所示。

表4-3布尔运算真值表

Not由真变假,由假变真。And对两个布尔值进行比较,如果两个值均为真,则结果为真,否则为假。Or对两个布尔值进行比较,如果其中一个值为真,则结果为真,只有两个值都为假时,结果才为假。运算布尔表达式时,先运算关系表达式,再运算布尔表达式。例如:

4.2.3 运算符的优先顺序

在一个表达式中进行多种操作时,VB会按一定的顺序进行求值,称这个顺序为运算符的优先顺序。运算符的优先顺序如表4-4所示。

表4-4 运算符的优先顺序

说明:

1)同级运算按照它们从左到右出现的顺序进行计算。

2)可以用括号改变优先顺序,强令表达式的某些部分优先运行。

3)括号内的运算总是优先于括号外的运算,在括号之内,运算符的优先顺序不变。

【例4-1】设变量x=4,y=-1,a=7.5,b=-6.2,求表达式x+y>a+b And Noty<b的值。

分析:将按下面步骤计算:

1)先进行算术运算:3>-1.3 And Not y<b

2)再进行关系运算:True And Not False

3)进行非运算:True And True

4)最后得:True

【例4-2】判断某个年份是闰年的根据是年份数满足下述条件之一。

条件1:能被4整除,但不能被100整除的年份都是闰年。

条件2:能被100整除,又能被400整除的年份都是闰年。

设变量y表示年份,写出判断y是否闰年的布尔表达式。解:判断y是否满足条件1的布尔表达式是:y Mod 4=0 And y Mod 100◇0判断y是否满足条件2的布尔表达式是:y Mod 100=0 And y Mod 400=0两者取“或”,即得判断闰年的布尔表达式:

y Mod 4=0 And y Mod 100<>0 Or y Mod 100=0 And y Mod 400=0