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

2.4 表达式

运算是对数据进行加工的过程,描述各种不同运算的符号称为运算符,而参与运算的数据称为操作数。表达式用来表示某个求值规则,它由运算符和配对的圆括号将常量、变量、函数、对象等操作数以合理的形式组合而成。

表达式可用来执行运算、操作字符或测试数据,每个表达式都产生唯一的值。表达式的类型由运算符的类型决定。在VB中有五类运算符和表达式:算术运算符和算术表达式、字符串运算符和字符串表达式、日期运算符和日期表达式、关系运算符和关系表达式、布尔运算符和布尔表达式。本节先介绍前三类,关系运算符和关系表达式、布尔运算符和布尔表达式将在第4章中作详细介绍。

2.4.1 算术表达式

算术表达式也称数值型表达式,由算术运算符、数值型常量、变量、函数和圆括号组成,其运算结果为一数值。算术表达式的格式为

<数值1><算术运算符1><数值2>[<算术运算符2><数值3>]

1.算术运算符

VB有七个算术运算符,如表2-2所示。在这七个算术运算符中,只有取负“-”是单目运算符,其他均为双目运算符。加(+)、减(-)、乘(*)、浮点除法(/)、取负(-)、乘方(^)运算的含义与数学中基本相同。

表2-2 算术运算符

1)/和\的区别:1/2=0.5,1\2=0。整除号\用于整数除法,在进行整除时,如果参加运算的数据含有小数,首先将它们四舍五入,使其成为整型数或长整型数(必须保证它们为-2147483648.5~+2147483647.5),然后再进行运算,其结果截尾成整型数。

2)模运算符Mod用来求整型除法的余数。其结果为第1个操作数整除第2个操作数所得的余数。例如:9 Mod 7的值为2,16 Mod 25的值是16。若表达式为:25.58 Mod 6.91,则首先把25.58和6.91分别取整为26和7,运算结果为5。

3)进行除法(包括整除)运算时除数为0或进行乘幂运算时指数为负数而底数为0时,都会产生算术溢出的错误信息。

2.表达式的书写规则

算术表达式与数学中的表达式写法有所区别,在书写表达式时应当特别注意:

1)每个符号占1格,所有符号都必须一个一个并排写在同一横线上,不能在右上角或右下角写方次或下标。例如:23要写成2^3,x1+x2要写成x1+x2。

2)原来在数学表达式中省略的内容必须重新写上。例如:2x要写成2*x。

3)所有括号都用小括号( ),括号必须配对。例如:3[x+2(y+z)]必须写成3*(x+2*(y+z))。

4)要把数学表达式中的有些符号,改成VB中可以表示的符号。例如:要把2πr改为2*pi*r。

3.算术运算符的优先级

在算术表达式中包含各种算术运算符,必须规定各个运算的先后顺序,这就是算术运算符的优先级。表2-3由高到低列出了算术运算符的优先顺序。

表2-3 运算符的优先顺序

其中乘和浮点除是同级运算符,加和减是同级运算符。当一个表达式中含有多种算术运算符时,将按上述顺序求值。如果表达式中含有括号“( )”,则先计算括号内表达式的值;如果有多层括号,先计算最内层括号中的表达式。

2.4.2 字符串表达式

一个字符串表达式由字符串常量、字符串变量、字符串函数和字符串运算符组成。它可以是一个简单的字符串常量,也可以是若干个字符串常量或字符串变量的组合。VB只有一种字符串运算符,即连接运算符“&”,该运算符用于连接两个或更多的字符串。字符串表达式的格式为

<字符串1>&<字符串2>[&<字符串3>]

当两个字符串用连接运算符连接起来后,第二个字符串直接添加到第一个字符串的尾部,结果是一个更长的、包含两个源字符串的全部内容的字符串。如果要把多个字符串连接起来,每两个字符串之间都要用“&”号分隔。例如:

"ABC123"&"666xyz" '连接后结果为:"ABC123666xyz"

"计算机"&"世界" '连接后结果为:"计算机世界"

"12345"&"abcd"&"xyz" '连接后结果为:"12345abcd xyz"

除用“&”把两个表达式强制连接成一个字符串外,还可以用“+”把两个字符串连接成一个字符串。为了避免与算术加法运算符产生混淆,应该用“&”号。另外,“&”会自动将非字符串类型的数据转换成字符串后再进行连接,而“+”则不能自动转换。例如:

123&456&"abc" '连接后结果为:"123456abc"

2.4.3 日期表达式

日期型表达式由算术运算符“+、-”、算术表达式、日期型常量、日期型变量和函数组成。日期型数据是一种特殊的数值型数据,它们之间只能进行加“+”、减“-”运算。有下面三种情况:

1)两个日期型数据可以相减,结果是一个数值型数据(两个日期相差的天数)。例如:

#12/19/1999#-#11/16/1999# '结果为数值型数据:33

2)一个表示天数的数值型数据可加到日期型数据中,其结果仍然是一个日期型数据(向后推算日期)。例如:

#11/16/1999#+33 '结果为日期型数据:#1999-12-19#

3)一个表示天数的数值型数据可从日期型数据中减掉它,其结果仍然是一个日期型数据(向前推算日期)。例如:

#12/19/1999#-33 '结果为日期型数据:#1999-11-16#