【问题标题】:Is there a constant for max value for integer type?整数类型的最大值是否有常量?
【发布时间】:2016-10-16 15:46:27
【问题描述】:

我正在为 VBA 代码搜索 C 中的 MAXINT 之类的常量。我只找到了其他语言的参考资料,找不到 VBA 的参考资料。

如果没有这样的常数,VBA 中的 int 可以容纳的最大数是多少? 我尝试了 2147483647 但出现溢出错误。

【问题讨论】:

  • VBA 中的整数最大值为 32767,最小值为 -32768
  • 对于Long,它是2^31 - 1 = 2147483647。 AFAIK,没有常数。
  • 应该注意的是,由于我们不再使用 16 位环境,因此使用 Integer 而不是 Long 几乎没有意义。
  • @marlan:不,整数 = 2 个字节。但除非您创建巨大的数组,否则内存不再是真正的问题。溢出是。
  • 好的 @Andre 这是我的结果:在运行代码之前,MS Access 进程消耗了 12.8~9 MB。运行 Dim intArr(100000) As Integer Process 时消耗了 13.1 MB。运行 Dim lngArr(100000) As Long Process 时消耗 13.3 MB。以上测试了大约3次。 结论:VBA 不会在静态整数数组中填充整数。 至于 int 和 lngs 的组合,它们实际上是 Variatns 或 Objects(=references)的数组,很难得出结论……跨度>

标签: ms-access vba


【解决方案1】:

VBA 不提供MAXINT 常量。但是您可以轻松得出该值:

MAXINT = (2 ^ 15) -1
Debug.Print MAXINT
 32767

或者您可以在标准模块的声明部分将其定义为 Public 常量:

Public Const MAXINT As Integer = (2 ^ 15) - 1

然后MAXINT 将可用于该应用程序中的其余 VBA 代码。

而对于Long Integer,最大值为...

MAXLONG = (2 ^ 31) -1
Debug.Print MAXLONG
 2147483647 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-11
    • 2023-04-02
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2018-10-29
    • 2023-03-07
    相关资源
    最近更新 更多