在vba中关于long和integer的区别
大家好,我在学习全民一起vba提高篇,现在学到第四回,日期类然后我在学习过程中遇到了一个问题,就是老师在返回某个年月日中的年时,有这样一串代码他的数据定义的是long,
Sub demo4()
Dim a As Date, b As Long
a = #2/19/2011 1:50:30 PM#
b = Year(a)
MsgBox b
End Sub但是他之前在视频当中说过,integer最长可以+-3万,而年的话最多是9999年,基于这样的定位
我在编写的时候是写的
Sub demo4()
Dim a As Date, b As Integer
a = #2/19/2011 1:50:30 PM#
b = Year(a)
MsgBox b
End Sub
我想知道,在这个代码下面,使用long和integer有什么区别,他也没有说他为什么用long,所以我不知道使用long和使用integer是否是无所谓的 在你的代码里long和integer是一样的,不存在溢出的情况 integer无符号正负21亿左右,超过还是long较好 8位有符号数 11111111 值为-1
16位有符号数11111111 值为255 苏紫方璇 发表于 2021-4-9 15:37
在你的代码里long和integer是一样的,不存在溢出的情况
其实就是说,按照正规情况的话,我这串代码是否使用integer比用long来说是更合适的呢:lol,因为是初学者,所以有点死脑筋 cherrycdh 发表于 2021-4-9 16:08
其实就是说,按照正规情况的话,我这串代码是否使用integer比用long来说是更合适的呢,因为是初学者 ...
真要对比的话,我觉得integer确实更合适,区间够用,而且比long占用内存更小。原来学vb的时候我也喜欢用long,long比integer短3个字母,而且基本不用考虑溢出问题 声明为Interger表面看是节约了系统内存,其实不是,因为现在的计算机系统至少都是32位的系统,32位的含义是它在执行计算时,标准字长(可以理解为最小处理单位)就是4个字节(每个字节8位,总共32位)。所以就算你给它一个2字节数据,它也要耗用4个字节的运算资源来处理。由于这个原因,VBA在执行声明为Integer类型(2字节)的变量时会全部转换成Long类型(4字节)的变量然后再执行计算。所以,声明Integer类型不会节省内存,反而降低效率。 黄英拜 发表于 2021-4-9 23:08
声明为Interger表面看是节约了系统内存,其实不是,因为现在的计算机系统至少都是32位的系统,32位的含义是 ...
明白了,你这样一讲茅塞顿开,十分感谢:loveliness:
页:
[1]