gpt4 book ai didi

vba - VBE 立即窗口如何处理文字数字?

转载 作者:行者123 更新时间:2023-12-04 21:14:32 26 4
gpt4 key购买 nike

使用即时窗口进行一些调试,我遇到了以下问题,为了这个问题的目的,我已经简化了这些:

运行此命令:

?20000*2

产生“溢出”错误。让我们假设这是因为我们还没有声明数据类型,并且 VBE 已经假设 Integer - 结果落在有符号整数的边界之外,因此发生溢出。

但是,如果我运行:
?39999+1

我按预期得到 40000

这是因为我最初使用 Long 而不是 Integer(即 20,000 vs 39,999)?因此内存是根据初始输入数据而不是计算结果分配的?

最佳答案

没错。 VBA 将采用最大的输入组件并为结果分配内存。由于第一个示例中的两个组件都是 Int,这就是您所得到的。

您可以使用类型声明字符强制 VBE 将数字视为某种数据类型

?20000&*2
40000
?20000*2&
40000

在这两个示例中,&(Long 类型声明字符)强制将内存分配为 Long。它是第一个组件还是后一个组件都没有关系。我认为有些操作会被强制转换为特定的数据类型。求幂就是其中之一。
?2^2^2^2^2^2
4294967296
?typename(2^2^2^2^2^2)
Double

尽管所有组件都是整数,但结果是 double 型 - 即使它不一定是
?typename(2^2)
Double

关于vba - VBE 立即窗口如何处理文字数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29565624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com