零基础学按键精灵(第二章)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据类型
此文为小妖首发于按键精灵论坛。借百度平台转发,希望能够帮到学按键的朋友。
其实,第一期已经跨越了。也就是说,本来第一期应该放在后面的。但是,为了直观的让新手朋友知道自己缺乏的知识,我把它作为了第一期。
第二期,我们来介绍数据类型。
实际来说,按键的数据类型不严谨。
比如我们定义一个变量直接是:
1.Dim x
这样就已经定义了x 这个变量了。
数组变量如下:
1.Dim x(2)
这儿我们定义了数组名称是x,数组最大下标是2的一个数组变量。
其中的元素包括:x(0), x(1), x(2)这三个。所以,实际上,我们直接定义了一组一共3个变量的数组。这样定义的好处,后面做循环体的时候用得上。到时候再细说。这儿的0,1,2叫做下标。2是最大下标。
但是,如果是VB,那么定义变量,就需要定义其数据类型。比如,定义字符串类型的变量。应该是这样:
Dim x as String
上面只是说明,按键为了让新手更加快速掌握按键,所有把数据类型这个东西忽略了。在定义变量的时候,的确少了很多功夫。但是这儿也会引来了很多问题。非常多的新手朋友忽略了数据类型这个概念,经常出错。比如如下代码:
1.Dim i,x(2)
2.i = "a" //我们把 i = "a" 这类以“=” 号连接的语句叫做赋值语句。
通俗些就是在i代表的存储单元里面装”a”。我们这儿先暂时这么理解,后
文我会高手大家,什么叫存储单元。
3.TracePrint x(i)
我们定义了两个变量,其中x是数组变量,数组最大下标为2。然后我们给i赋值”a”,因为上面并没有定义i是什么类型的变量,所以这个赋值语句没毛病。但是,如果我们让i作为数组x的下标之后,就出现问题了。大家复制这段代码去运行,就能发现,提示脚本我的脚本1.Q ,第3行:类型不匹配: 'I',类型不匹配。
如果我们把i赋值“0”呢?
1.
style="text-align: left;">Dim i, x(2)
2.x(0)=1
3.TracePrint x(i)
4.i = "0"
5.TracePrint x(i)
调试信息如下:
脚本我的脚本1.Q ,第4行:类型不匹配: 'I',
脚本我的脚本1.Q ,第6行:1
也就是说,我们的第二句调试语句TracePrint x(i) 没什么问题。为什么呢?因为当“0” 赋值给i之后,因为”0”是数字的字符,按键默认的把这个字符转换成了数值。实际上i=”0”在这儿等价于i=0了。说这些,只是提醒大家数据类型的重要性。调试的时候,很容易因为i的值类型问题,无法通过调试。
一般的,按键类型有几个。
1、数值型(Integer、Double)。
2、字符型(字符串型)(String)。
3、布尔型(Boolean)。.
4、数组(Variant()等等)。
想知道你现在的变量是什么数据类型很简单。用typename 函数就行了。
1.Dim i,x(2)
2.i = "1" //赋值为字符串
3.TracePrint typename(i)
4.i = 1 //赋值为整数
5.TracePrint typename(i)
6.i = 1.2 //赋值为双精度数
7.TracePrint typename(i)
8.TracePrint typename(1=1) //直接调试等式,等式会直接返
回布尔型值
9.TracePrint typename(x) //这儿是调试数组,x是前面定
义的数组x(2)
数值型,就是数字,包括整数型(Integer)、双精度型(Double)。
字符型,字符型与字符串型。貌似都一样,因为基本没有什么函数限制这个只能字符还是字符串的。比如“a”,“a123”等等,都是字符串型。
布尔型,布尔型的值只有两个:false(假)和true(真)。且false 的序号为0,true的序号是-1。
1.TracePrint 1=1 //意思是调试输出 1=1 的值。 1=1 这是个等
式,不是赋值语句,作为函数参数出现的 = 号都表达等号的意思。这儿是
判断1是否等于1。
2.MsgBox 1 = 1 //因为调试输出返回的值与弹出框不一样。大家调
试下,其实就是上面那两种结果。调试是-1,弹出是true。代表的意思都
是真。
3.TracePrint 1=2
4.MsgBox 1 = 2
数组:定义方式前面已经说过了。定义x(2),那么X(0), X(1), X(2)都可以赋值,然后调用。
比如:
1.Dim x(2)
2.X(0)=1
3.X(1)=2
4.X(2)= X(0)+ X(1)
5.TracePrint X(2)
也就是相当于直接定义3个变量。当然,这个下标可以是变量:X(i)这样。
本帖隐藏的内容
数据类型转换:CBool 函数官方描述:返回表达式,此表达式已转换为Boolean 子类型的Variant。
1.MsgBox CBool(-1)
2.MsgBox CBool(0)
3.MsgBox CBool(5)
调试下发现,第一个返回true。第二个返回false。第三个返回true。其实,就是除了0或者等式结果返回0,比如CBool(1=0),1=0为假返回0。这时候CBool函数值为0(false)。其他情况都返回-1(true)。 CByte 函数官方描述:返回表达式,此表达式已被转换为Byte 子类型的Variant。
1.TracePrint CByte(-1)
2.TracePrint CByte(254.5)
3.TracePrint CByte(256)
大家调试下。
调试结果如下:
脚本我的脚本1.Q ,第1行:溢出:'CBYTE',
脚本我的脚本1.Q ,第2行:254
脚本我的脚本1.Q ,第3行:溢出:'CBYTE',
这是因为Cbyte 函数强制把以上数据转换成字节型(byte型)。而byte型数据范围是0-255。-1和256都溢出(溢出就是数据超出了范围)。