吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2062|回复: 7
收起左侧

[讨论] 在vba中关于long和integer的区别

[复制链接]
cherrycdh 发表于 2021-4-9 14:23
大家好,我在学习全民一起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是否是无所谓的

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

苏紫方璇 发表于 2021-4-9 15:37
在你的代码里long和integer是一样的,不存在溢出的情况
无闻无问 发表于 2021-4-9 15:50
c03xp 发表于 2021-4-9 16:02
8位有符号数    11111111 值为-1
16位有符号数  11111111 值为255
 楼主| cherrycdh 发表于 2021-4-9 16:08
苏紫方璇 发表于 2021-4-9 15:37
在你的代码里long和integer是一样的,不存在溢出的情况

其实就是说,按照正规情况的话,我这串代码是否使用integer比用long来说是更合适的呢,因为是初学者,所以有点死脑筋

点评

真要对比的话,我觉得integer确实更合适,区间够用,而且比long占用内存更小。原来学vb的时候我也喜欢用long,long比integer短3个字母,而且基本不用考虑溢出问题  详情 回复 发表于 2021-4-9 17:47
苏紫方璇 发表于 2021-4-9 17:47
cherrycdh 发表于 2021-4-9 16:08
其实就是说,按照正规情况的话,我这串代码是否使用integer比用long来说是更合适的呢,因为是初学者 ...

真要对比的话,我觉得integer确实更合适,区间够用,而且比long占用内存更小。原来学vb的时候我也喜欢用long,long比integer短3个字母,而且基本不用考虑溢出问题
黄英拜 发表于 2021-4-9 23:08
声明为Interger表面看是节约了系统内存,其实不是,因为现在的计算机系统至少都是32位的系统,32位的含义是它在执行计算时,标准字长(可以理解为最小处理单位)就是4个字节(每个字节8位,总共32位)。所以就算你给它一个2字节数据,它也要耗用4个字节的运算资源来处理。由于这个原因,VBA在执行声明为Integer类型(2字节)的变量时会全部转换成Long类型(4字节)的变量然后再执行计算。所以,声明Integer类型不会节省内存,反而降低效率。

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
dunxp + 1 + 1 热心回复!
cherrycdh + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| cherrycdh 发表于 2021-4-12 10:13
黄英拜 发表于 2021-4-9 23:08
声明为Interger表面看是节约了系统内存,其实不是,因为现在的计算机系统至少都是32位的系统,32位的含义是 ...

明白了,你这样一讲茅塞顿开,十分感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 04:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表