![]() |
#2
风吹过b2012-11-28 10:46
直接数,VB 规定,当直接属于某个范围时,就按 某个数进行存储。
如 24*3600 因为 24 和 3600 均小于 32767 ,所以均按 整数型 存储。 而在 24 * 33600 ,33600 大小 32767 ,是按 长整型 存储。 ----------------------- VB 表达式运算时,按各个存储数据的最高的数据等级 那一级来计算。 等级是: 双精度数》单精度数》长整数》整数 24*3600 中,两个数都是整数,所以按整数运算,结果也试图放入 整数 型,因为结果超过了 32767 ,所以报溢出。 24*33600 中,33600 超出整数,是长整型,所以按长整数运算,结果也试图放入 长整数 内,因为结果没有超过 2147483647 ,所以不报溢出。 ----------------------- 24*3600 ,修改为 24&*3600 或 24*3600& 都可以。 数字后面带数据类型 表示符,是告诉 VB ,这个数按这种格式存储。 ====================== VB 数值数据类型 数值类型分为整数型和实数型两大类。 1、整数型 整数型是指不带小数点和指数符号的数。 按表示范围整数型分为:整型、长整型 (1)整型(Integer,类型符%) 整型数在内存中占两个字节(16位) 十进制整型数的取值范围:-32768 ~ +32767 例如:15,-345,654%都是整数型。而45678%则会发生溢出错误。 (2)长整型(Long,类型符&) 长整数型在内存中占4个字节(32位)。 十进制长整型数的取值范围: -2147483648 ~ +2147483647 例如:123456,45678&都是长整数型。 2、实数型(浮点数或实型数) 实数型数据是指带有小数部分的数。 注意:数12和数12.0对计算机来说是不同的,前者是整数(占2个字节),后者是浮点数(占4个字节) 实数型数据分为浮点数和定点数。 浮点数由三部分组成:符号,指数和尾数。 在VB中浮点数分为两种: 单精度浮点数( Single ) 双精度浮点数( Double ) (1)单精度数(Single,类型符!) 在内存中占4个字节(32位),,有效数字:7位十进制数 取值范围:负数 -3.402823E+38 ~ -1.401298E-45 正数 1.401298E-45 ~ 3.402823E+38 在计算机程序里面不能有上标下标的写法,所以乘幂采用的是一种称为科学计数法的表达方法 这里用E或者e表示10的次方(E/e大小写都可以) 比如:1.401298E-45表示1.401298的10的负45次方 vb里面可以这样表示:8.96E-5 例:21e5(正号省略)表示: 21乘以10的5次方的一个单精度数 (2) 双精度数(Double,类型符#) Double类型数据在内存中占用8个字节(64位) Double型可以精确到15或16位十进制数,即15或16位有效数字。 取值范围: 负数: –1.797693134862316D+308 ~ -4.94065D-324 正数: 4.94065D-324 ~ 1.797693134862316D+308 比如17.88D5,表示它是一个双精度数,表示17.88乘以10的5次方 这里用D来表示10的次方 二、 货币型(Currency,类型符@) 主要用来表示货币值,在内存中占8个字节(64位); 整数部分为15位,可以精确到小数点后4位,第五位四舍五入;属于定点实数 货币型数据的取值范围: -922337203685447. 5808 ~ 922337203685447. 5807 跟浮点数的区别:小数点后的位数是固定的,4位 例如:3.56@ 、 65.123456@都是货币型。 三、 字节型(Byte,无类型符) 一般用于存储二进制数。 字节型数据在内存中占1个字节(8位)。 字节型数据的取值范围:0 ~ 255 四、 日期型(Date) 在内存中占用8个字节,以浮点数形式存储。 日期型数据的日期表示范围为: 100年1月1日~9999年12月31日 日期型数据的时间表示范围为: 00:00:00 ~ 23:59:59 用#括起来放置日期和时间,允许用各种表示日期和时间的格式。 日期可以用“/”、“,”、“-”分隔开,可以是年、月、日,也可以是月、日、年的顺序。时间必须用“:”分隔,顺序是:时、分、秒。 例: #09/10/2000# 或 #2000-09-12# #08:30:00 AM# #09/10/2000 08:30:00 AM# 例: Dim mylab As Date mylab = #9/3/2001 11:35:00 AM# Time = mylab 在VB中会自动转换成mm/dd/yy(月/日/年)的形式。 五、 逻辑型(Boolean) 逻辑型数据在内存中占2个字节。 逻辑型数据只有两个可能的值: True(真) False(假) 若将逻辑型数据转换成数值型,则: True(真)为 –1 False(假)为 0 当数值型数据转换为Boolean型数据时: 非0的数据转换为true,0为fasle。 六、字符串( String ,类型符$) 字符串是一个字符序列,必须用双引号括起来 说明: 双引号为分界符,输入和输出时并不显示。 字符串中包含字符的个数称为字符串长度。 长度为零的字符串称为空字符串,比如“”,引号里面没有任何内容 字符串中包含的字符区分大小写。 字符串可分为变长字符串和定长字符串两种。 (1).变长字符串(长度为字符串长度) 例:dim a as string a="123" a="456789“ (2).定长字符串(长度为规定长度) 对于定长字符串,当字符长度低于规定长度,即用空格填满,当字符长度多于规定长度,则截去多余的字符。 例:dim a as string * 10 七、对象数据类型(Object ) 对象型数据在内存中占用4个字节。用以引用应用程序中的对象。 八、变体数据类型(Variant ) 变体数据类型是一种特殊数据类型,具有很大的灵活性,可以表示多种数据类型,其最终的类型由赋予它的值来确定。 九、用户自定义类型 如果我想同时记录一个学生的学号、姓名、性别、总分,那么我可以用自定义类型。 用户自定义类型特点:这种类型的数据由若干个不同类型的基本数据组成。 自定义类型由Type语句来实现: 格式:Type 自定义类型名 元素名1 As 类型名 元素名2 As 类型名 …… 元素名n As 类型名 End Type Type是语句定义符,告诉VB现在要定义一个数据类型,是vb的关键字;其后的自定义类型名是要定义的该数据类型的名称,由用户确定;end type表示类型定义结束;自定义类型名是组成该数据类型的变量的名称 例: Type Student Num As Long ‘学号 Name As String*10 ‘姓名,用长度为10的定长字符串来存储 Sex As String*5 ‘性别,用长度为5的定长字符串来存储 Score As Single ‘得分,用单精度数来存储 End Type 一般在标准模块里面定义,如果只想在窗体里面定义,则前面必须加上Private,表示该类型只对本窗体有效,其他窗体无法定义该类型的变量。 定义了Student类型之后,我们就可以定义Student类型的变量了,比如: Dim Stu As Student 我们可以像引用对象的属性那样引用类型的各个成员: 比如:Stu.Num Stu.Name Stu.Sex Stu.Sex Stu.Score ------------------------------ |
Dim x As Long
x = 24*3600
这一步竟然报溢出错误。
但是,x= 24 * 33600,数字更大,但却不报错。
因为24*3600=86400,直接赋值 x=86400,也不报错
这样写也不报错:
Dim x,y As Long
x = 24
y = 3600
x = x * y
谁知道这是什么原因?难道VB里就是不允许24*3600?算不算bug?
只有本站会员才能查看附件,请 登录
[ 本帖最后由 tk72 于 2012-11-28 09:58 编辑 ]