第三章VB语言基础3.1数据类型在各种程序设计语言中,数据类型的规定和处理方法是各不相同的。VB不但提供了丰富的标准数据类型,此外还可以由用户自定义类型。厂整型一整数L长整型厂单精度型浮点数厂数值型L双精度型货币型字节型基本数据类型字符型逻辑型日期型数据类型变体型(对象型自定义数据类型一复合数据类型数组标准数据类型表1-3-1Visual Basic的效据类型数据类型。关键字类型符前缀存贮大小举例(字节)无字节型?125Bytebe10t逻辑型?无fe2+Boolean+TrueFalse整型%23276832767Integer+ic长整型?&?1e42123456677Long单精度型。IP42-3.4E191.4E-10SingleS4双精度型?#81.75686267D361.123456789Doubledhle货币型?@?84$12.345*Currency+c日期型无?Date803/25/1999*dt宇符型?$t字符串βStringstre"abcdefg"无对象型对象?Object+4tCommand变体型无?ve按需分配任一值?Variant1.数值型数据(Numeric)数值型数据一般分为整型数和浮点数两类。整型数分为整数(Integer)和长整数(Long)浮点数分为单精度浮点数(Single)和双精度浮点数(Double)。有时也把货币型数据(Currency)和字节型数据(Byte)划归数值型数据。1
1 第三章 VB 语言基础 3.1 数据类型 在各种程序设计语言中,数据类型的规定和处理方法是各不相同的。VB 不但提供了丰 富的标准数据类型,此外还可以由用户自定义类型。 数据类型 复合数据类型 基本数据类型 字符型 逻辑型 日期型 变体型 对象型 数值型 整数 浮点数 货币型 字节型 整型 长整型 单精度型 双精度型 自定义数据类型 数组 标准数据类型 1.数值型数据(Numeric) 数值型数据一般分为整型数和浮点数两类。 整型数分为整数(Integer)和长整数(Long) 浮点数分为单精度浮点数(Single)和双精度浮点数(Double)。 有时也把货币型数据(Currency)和字节型数据(Byte)划归数值型数据
整数是不带小数点和指数符号的数,在机器内部以2字节二进制码形式表示。VB中用土n[%]来表示整数,其中%为整数的类型符,可以省略。如-123%、123%都表示整数。整数的最大值为32767,大于此数,程序运行时就会因为溢出产生中断。此时可使用长整数。长整数(Long)长整数用4字节二进制数存储,可以表示更大的整数,其取值范围为-21474836482147483647。VB中用土n&来表示长整数,其中&为长整数的类型符。如-1234&、987654&都表示长整数。2)浮点数浮点数也称为实型数或实数,由符号、指数和尾数组成,分单精度浮点数(Single)和双精度浮点数(Double),其指数部分分别用“E”(或“e”)和“D”(或“d”)表示。单精度浮点数表示形式有三种,即带有小数点的数、在数字后加!符号和科学记数法。例如,123.45、123.451、0.12345E+3都表示为单精度浮点数。要表示双精度浮点数,只要在数字后加#符号或在科学记数法中用D代替E。例如,123.45#、0.12345E+3#、0.12345D+3都表示为双精度浮点数。3)货币型(Currency)货币型属于定点实数或整数,用8位字节存储小数点前有15位,小数点后有4位,其余的数字被舍去,其表示形式为在数字后加上“”。4)字节型(Byte)字节型数据用1个字节的无符号二进制数存储,取值范围为0~255。2.字符型数据(string)字符型数据是指一切可打印的字符和字符串,它是用双引号括起来的一串字符。一个西文字符、汉字都是一个字符,它们在内存中都占两个字节。字符型数据的默认值为:“”在VB中有两种类型字符串:变长字符串和定长字符串。变长字符串的长度不确定,可以是0~231个字符(约21亿)。定长字符串长度一定,最多不超过216个字符“变长字符串如:Dim SAsString“定长字符串Dim/Private/Public/StaticvarnameAsString*8如:DimMyStringAsString*10“声明长度为10个字符的定长字符串MyString="Maryis5."Print MyStringMyString=“Mary is five years old."“MyString的值为“Maryisfi”,多余的部分被截断,舍弃。Print MyString说明:1)空字符串与空格串的区别;2)在字符串中必须用两个连续的双引号来表示字符串有一个双引号。如字符串:abc“计算机”abc,在VB中表示为:”abc””计算机”"abc”3)DimintXAsIntegerDim strYAs StringStrY=3716“将数字赋值给字符串intX=strY“将字符串传递给数值变量3.逻辑型数据(Boolean)2
2 整数是不带小数点和指数符号的数,在机器内部以 2 字节二进制码形式表示。 VB 中用±n[%]来表示整数,其中%为整数的类型符,可以省略。如-123%、123%都表示 整数。 整数的最大值为 32767,大于此数,程序运行时就会因为溢出产生中断。此时可使用长 整数。 长整数(Long) 长 整 数 用 4 字 节 二 进 制 数 存 储 , 可 以 表 示 更 大 的 整 数 , 其 取 值 范 围 为 -2147483648~2147483647。 VB 中用±n&来表示长整数,其中&为长整数的类型符。如-1234&、987654&都表示长整 数。 2)浮点数 浮点数也称为实型数或实数,由符号、指数和尾数组成,分单精度浮点数(Single)和 双精度浮点数(Double),其指数部分分别用“E”(或“e”)和“D”(或“d”)表示。 单精度浮点数表示形式有三种,即带有小数点的数、在数字后加!符号和科学记数法。 例如,123.45、123.451、0.12345E+3 都表示为单精度浮点数。 要表示双精度浮点数,只要在数字后加#符号或在科学记数法中用 D 代替 E。 例如,123.45#、0.12345E+3#、0.12345D+3 都表示为双精度浮点数。 3)货币型(Currency) 货币型属于定点实数或整数,用 8 位字节存储小数点前有 15 位,小数点后有 4 位,其 余的数字被舍去,其表示形式为在数字后加上“@”。 4)字节型(Byte) 字节型数据用 1 个字节的无符号二进制数存储,取值范围为 0~255。 2.字符型数据(string) 字符型数据是指一切可打印的字符和字符串,它是用双引号括起来的一串字符。一个西 文字符、汉字都是一个字符,它们在内存中都占两个字节。字符型数据的默认值为:“” 在 VB 中有两种类型字符串:变长字符串和定长字符串。 变长字符串的长度不确定,可以是 0~231 个字符(约 21 亿)。 定长字符串长度一定,最多不超过 216 个字符 如:Dim S As String ‘变长字符串 Dim/Private/Public/ Static varname As String * 8 ‘定长字符串 如: Dim MyString As String * 10 ‘声明长度为 10 个字符的定长字符串 MyString = "Mary is 5." Print MyString MyString = “Mary is five years old.” ‘MyString 的值为 Print MyString “Mary is fi”, 多余的部分被截断,舍弃。 说明:1)空字符串与空格串的区别; 2)在字符串中必须用两个连续的双引号来表示字符串有一个双引号。 如字符串: abc“计算机”abc,在 VB 中表示为: "abc""计算机""abc" 3)Dim intX As Integer Dim strY As String StrY=3716 ‘将数字赋值给字符串 intX=strY ‘将字符串传递给数值变量 3.逻辑型数据(Boolean)
逻辑型数据只有两个值:真(True)和假(False),用2个字节存储,经常用来表示逻辑判断的结果。Boolean的缺省值为False。说明:当把数值型数据转换为逻辑型数据时:0——转换为False,非0——转换为True。反之,当把逻辑型数据转换为数值型时:False——转换为0,True——转换为-1。4.日期型数据(Date)用8个字节存储,用于存储Date和Time,表示的日期从公元100年1月1日~9999年12月31日,时间范围为0:00:0023:59:59。任何在字面上可以被认作日期的文本都可以赋值给日期变量,且日期文字必须用符号“#”括起来。默认值为:0:00:00。如:#January15,2002#,#1985-10-19:45:00PM#都是合法的日期型数据。例如:DimSomeDateAsDateSomeDate=#1980-03-16#SomeDate=#3-6-9313:20#SomeDate=#March27,20041:20am#4.日期型数据(Date)数字序列表示法:数字序列是双精度的浮点数,由VB自动解释。序号的整数部分表示日期,小数部分表示时间。在VB中,基准日期为公元1899年12月30日,这一天的整数部分为0,比基准早的日期序号为负数,比其晚的日期序号为正数,其取值范围为657434(公元100年1月1日)到2958465(公元9999年12月31日)。小数部分:以某个时间点占一天24小时的比例表示。如:6:00AM会以0.25来表示。-2.5表示1899-12-2812:00:005.75表示1900-1-418:00:00366.05表示1900-12-311:12:00367.05表示1901-1-11:12:00-367.05表示1898-12-281:12:005.变体(Variant)数据类型Variant数据类型又称为变体数据类型,它是一种特殊的、可以表示所有系统定义类型的数据类型。变体数据类型对数据的处理可以根据上下文的变化而变化,除了定长的string类型及用户自定义的数据类型之外,可以处理任何类型的数据而不必进行数据类型的转换,如上所述的数值型、日期型、对象型、字符型的数据都可表示。Variant数据类型是VB对所有未定义的变量的缺省数据类型,能够存储所有类型的数据。Variant型变量占用16个字节的内存。6.对象(Object)类型的数据对象类型:占用4个字节的内存空间,存放的是对一个对象的引用(对象在内存中的地址),程序对对象型变量的操作等同于对它所引用对象的操作。3.2 变量变量:在程序运行中其存储的值可以改变3
3 逻辑型数据只有两个值:真(True)和假(False),用 2 个字节存储,经常用来表示逻 辑判断的结果。Boolean 的缺省值为 False。 说明: 当把数值型数据转换为逻辑型数据时: 0——转换为 False,非 0——转换为 True。 反之,当把逻辑型数据转换为数值型时: False——转换为 0,True——转换为-1。 4. 日期型数据(Date) 用 8 个字节存储, 用于存储 Date 和 Time,表示的日期从公元 100 年 1 月 1 日~9999 年 12 月 31 日,时间范围为 0:00:00~23:59:59。 任何在字面上可以被认作日期的文本都可以赋值给日期变量,且日期文字必须用符号 “#”括起来。默认值为:0:00:00。如: #January 15,2002#, #1985-10-1 9:45:00 PM# 都是合法的日期型数据。 例如: Dim SomeDate As Date SomeDate = #1980-03-16# SomeDate = #3-6-93 13:20# SomeDate = #March 27 ,2004 1:20am# 4. 日期型数据(Date) 数字序列表示法: 数字序列是双精度的浮点数,由 VB 自动解释。序号的整数部分表示日期,小数部分表 示时间。 在 VB 中,基准日期为公元 1899 年 12 月 30 日,这一天的整数部分为 0,比基准早的日 期序号为负数,比其晚的日期序号为正数,其取值范围为 657434(公元 100 年 1 月 1 日) 到 2958465(公元 9999 年 12 月 31 日)。小数部分:以某个时间点占一天 24 小时的比例表 示。 如:6:00 AM 会以 0.25 来表示。 -2.5 表示 1899-12-28 12:00:00 5.75 表示 1900-1-4 18:00:00 366.05 表示 1900-12-31 1:12:00 367.05 表示 1901-1-1 1:12:00 -367.05 表示 1898-12-28 1:12:00 5.变体(Variant)数据类型 Variant 数据类型又称为变体数据类型,它是一种特殊的、可以表示所有系统定义类型 的数据类型。 变体数据类型对数据的处理可以根据上下文的变化而变化,除了定长的 string 类型及 用户自定义的数据类型之外,可以处理任何类型的数据而不必进行数据类型的转换,如上所 述的数值型、日期型、对象型、字符型的数据都可表示。 Variant 数据类型是 VB 对所有未定义的变量的缺省数据类型,能够存储所有类型的数 据。Variant 型变量占用 16 个字节的内存。 6.对象(Object)类型的数据 对象类型:占用 4 个字节的内存空间,存放的是对一个对象的引用(对象在内存中的地 址),程序对对象型变量的操作等同于对它所引用对象的操作。 3.2 变量 变量:在程序运行中其存储的值可以改变
命名规则:必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度小于等于255个字符不能使用VB中的关键字VB不区分变量名的大小写,一般变量名首字母用大写,其余用小写字母表示;常量全部用大写字母表示变量声明用Dim语句显式声明变量Dim变量名[As类型]As部分缺省,创建的变量为变体类型一条Dim语句可同时定义多个变量,但每个变量应有类型说明,否则为变体型。例如:Dimm,nAsInteger,X,yAsSingle则创建了变体型变量m、X,整型变量n和单精度型变量y常量常量是在程序运行中不变的量,VB有三种常量:直接常量其常数值直接反映了其类型符号常量用户声明,便于程序阅读或修改Const符号常量名[As类型]=表达式例如:ConstPI=3.14159系统常量系统提供许多内部常量例如:vbCrLf回车/换行组合符3.3运算符和表达式3.3.1和其他语言一样,VB中也具有丰富的运算符,通过运算符和操作数组合成表达式,实现程序编制中所需的大量操作。运算符是表示实现某种运算的符号。VB中的运算符可分算术运算符、字符串运算符、关系运算符和逻辑运算符4类。算术运算符运算符优先级例结果A19ia*22-ia-3*327ia*iatia1310/ia3.333333333313410ia51Mod10 Mod ia610+ia+13一-76ia-10注意:对算术运算符两边的操作数应是数值型,若是数字字符或逻辑型,则自动转换成数值类型后再运算。例如:30-True结果是31,逻辑量True转为数值-1,False转为数值0False+10+4”结果是14例:5+10mod109/3+2~2结果:10字符串运算符4
4 命名规则: 必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度小于等于 255 个字符 不能使用 VB 中的关键字 VB 不区分变量名的大小写,一般变量名首字母用大写,其余用小写字母表示;常量全 部用大写字母表示 变量声明 用 Dim 语句显式声明变量 Dim 变量名 [As 类型] As 部分缺省,创建的变量为变体类型 一条 Dim 语句可同时定义多个变量,但每个变量应有类型说明,否则为变体型 。 例如:Dim m,n As Integer, x,y As Single 则创建了变体型变量 m、x,整型变量 n 和单精度型变量 y 常量 常量是在程序运行中不变的量,VB 有三种常量: 直接常量 其常数值直接反映了其类型 符号常量 用户声明,便于程序阅读或修改 Const 符号常量名 [As 类型] = 表达式 例如: Const PI = 3.14159 系统常量 系统提供许多内部常量 例如:vbCrLf 回车/换行组合符 3.3 运算符和表达式 3.3.1 和其他语言一样,VB 中也具有丰富的运算符,通过运算符和操作数组合成表达式, 实现程序编制中所需的大量操作。 运算符是表示实现某种运算的符号。VB 中的运算符可分算术运算符、字符串运算符、 关系运算符和逻辑运算符 4 类。 算术运算符 注意:对算术运算符两边的操作数应是数值型,若是数字字符或逻辑型,则自动转换成 数值类型后再运算。 例如: 30-True 结果是 31,逻辑量 True 转为数值-1,False 转为数值 0 False + 10 + "4" 结果是 14 例:5+10 mod 10 \ 9 / 3+2 ^2 结果:10 字符串运算符
&两旁的操作数可任意,转换成字符型后再连接+两旁的操作数应均为字符型:1)数值型:则进行算术加运算2)一个为数字字符,另一个为数值,自动将数字字符转换为数值后进行算术加3)一个为非数字字符,另一个为数值型,出错例如:操作操作结果结果"ab123"出错"ab"&123"ab"+12"12456"468"12"&456"12"+456"12"&True"12True""12"+True11关系运算符关系运算符是双目运算符,作用是对两个操作数进行大小比较,若关系成立,贝则返回True,否则返回False。操作数可以是数值型、字符型。例结果运算符ABCDE"="ABR"FalseABCDE">"ABR"False>=bc">="abcdeTrue23<3VFalseK="<"3"23True<>abc"<"abcdeTrue逻辑运算符逻辑运算符除Not是单目运算符外,其余都是双目运算符,作用是将操作数进行逻辑运算,结果是逻辑值True或False。结果运算符说明优先级说明例T取反1Not当操作数为假时,结果为真NotF与F2操作数均为真时,结果才为真TAndFAndTTAndT或TOr3操作数中有一个为真时,结果为真TOrFFFOrF异或3TXor操作数相反时,结果才为真TXorFFTXorT3.3.2表达式1.组成:变量、常量、函数、运算符和圆括号2.书写规则运算符不能相邻例a+-b是错误的乘号不能省略例x乘以y应写成:x*y括号必须成对出现(均使用圆括号)表达式从左到右在同一基准上书写,无高低、大小3.不同数据类型的转换5
5 & 两旁的操作数可任意,转换成字符型后再连接 + 两旁的操作数应均为字符型; 1)数值型:则进行算术加运算 2)一个为数字字符,另一个为数值,自动将数 字字符转换为数值后进行算术加 3)一个为非数字字符,另一个为数值型,出错 例如: 操作 结果 操作 结果 "ab" & 123 "ab123 " "ab" + 12 出错 "12" & 456 " 12456 " "12" + 456 468 "12" & True "12True" "12" + True 11 关系运算符 关系运算符是双目运算符,作用是对两个操作数进行大小比较,若关系成立,则返回 True,否则返回 False。操作数可以是数值型、字符型。 运算符 例 结果 = " ABCDE " = " ABR " False > " ABCDE " > " ABR " False >= " bc" >= "abcde " True < 23<3 False <= " 23 " < " 3 " True <> " abc" <> "abcde " True 逻辑运算符 逻辑运算符除 Not 是单目运算符外,其余都是双目运算符,作用是将操作数进行逻辑运 算,结果是逻辑值 True 或 False。 3.3.2 表达式 1.组成:变量、常量、函数、运算符和圆括号 2.书写规则 运算符不能相邻 例 a+ -b 是错误的 乘号不能省略 例 x 乘以 y 应写成:x*y 括号必须成对出现(均使用圆括号) 表达式从左到右在同一基准上书写,无高低、大小 3. 不同数据类型的转换