3.2.2  变量

3.2.2 变量

变量在程序运行过程中其存储的数据可以不断变化。一个变量占据一定的内存单元,而内存单元中存放的数据就是变量值。实际上,变量名代表的就是这个内存单元的地址。在程序执行过程中,一个变量在某一个时刻只能存放一个数据,如果在程序运行过程中数据发生变化,则这个内存单元中原来的数据就被新的数据所取代。

1.变量命名规则

程序中的变量,都有一个名称,便于对其进行操作,因此使用变量前必须给变量命名。在Visual Basic中,变量的命名规则如下。

1)第一个字符必须是英文字母,后接字符可以是数字、字母、下画线,但不得有小数点、空格、+、−、%、(、)、#、$等符号。

2)变量名后可加类型说明符号,如!、@、#、$、%、&等。类型说明符号在变量命名时也可以省略。但是,有类型说明符号的命名可以增强程序的可阅读性,从类型说明符就可以立即知道变量所属的类型,便于对程序的理解。

3)变量名最长可达255个字符。

4)变量名称不能与Visual Basic系统的关键字重名。例如,不能用Input、Dim、String等作为变量名。

5)变量名的命名最好使用Visual Basic建议的变量名前缀或后缀的约定来命名,这样的变量名有一定含义且容易被理解,如Person_name、Person_class等。Visual Basic不区分字母的大小写,如STUDENT、Student和student指的是同一个名字。

2.变量声明

在Visual Basic中,变量使用前有两种声明方式。

(1)隐式声明

Visual Basic允许变量不经声明就直接进行赋值,变量的类型由赋值的数据类型决定,称为隐式声明。这时,Visual Basic默认变量类型为变体类型Variant。

不经声明就使用变量虽然方便,但在程序编辑过程中如果输入变量名有误,系统不会自动报错或警告,因为系统会把错误输入的名字看作一个全新的变量名。例如,Person_name是用来保存学生姓名的,但如果错误输入为Persn_name,系统不会发出警告,并且有可能这个错误也不会影响程序的执行,但是会导致结果不对,需要经过调试才能发现错误。因此,最好养成在使用变量前先声明的习惯。

(2)显式声明

变量使用前预先进行声明,称为显式声明。显式声明可以通过声明语句声明变量,定义变量的名称及数据类型。声明语句的语法格式:

978-7-111-49659-5-Chapter03-12.jpg

定义时,变量名与关键字、关键字与关键字之间都要有空格。在输入完As并输入空格后,只需要输入关键字的前几个字符,系统就会弹出数据类型列表,并自动定位到以这些字符开始的数据类型。例如,当输入bo后,系统会自动定位到Boolean数据类型,如图3-3所示,这时不需要再输入后面的字符,直接按空格键即可。这样既可以提高输入速度,又可以提高准确度。

978-7-111-49659-5-Chapter03-13.jpg

图3-3 定义变量

使用声明语句建立一个变量后,Visual Basic自动将数值型的变量赋初始值0,将字符型或变体型的变量赋空串,将布尔型变量赋False。使用变量时,Visual Basic会自动将赋值的数据转换成与变量相符的数据类型,使变量的值与声明语句中的类型相匹配。例如,声明语句为

978-7-111-49659-5-Chapter03-14.jpg

程序中有如下代码。

978-7-111-49659-5-Chapter03-15.jpg

系统会自动按四舍五入原则将数值转换成整型数据4并存储到以a为名的存储单元中,变量a得到的赋值实际是整型数据4。

这里是显式声明变量,如果想让Visual Basic对输入错误的变量名进行提醒警告,还需要设置Visual Basic为强制声明。设置强制声明有以下两种方式。

1)在Visual Basic集成开发环境中,执行菜单命令“工具”→“选项”,打开“选项”对话框。在“编辑器”选项卡中,选中“要求变量声明”复选框,如图3-4所示。这样,系统强制要求变量声明,未显示声明的变量被认为是错误的。如果错误输入变量名,当运行程序时,系统会弹出如图3-5所示的提示框,提示变量未定义。

978-7-111-49659-5-Chapter03-16.jpg

图3-4 “选项”对话框

2)在代码编辑窗口顶部左侧的对象列表中选择“通用”,然后在声明部分中,即代码窗口的最上端,输入强制声明语句Option Explicit,如图3-6所示。添加Option Explicit语句后,当运行程序时,系统也会弹出如图3-5所示的提示框。这种方式只能作用于该代码窗口自身,对于其他窗口无效。而采用第一种方式,系统自动将Option Explicit添加到所有对象的声明部分中。

978-7-111-49659-5-Chapter03-17.jpg

图3-5 变量未定义

978-7-111-49659-5-Chapter03-18.jpg

图3-6 强制声明语句