为什么vba中布尔值的大小是2字节?

dhe*_*ein 9 vba types range

在我的学徒生涯中,我们现在开始在学校学习 vba。当老师向我们分发数据类型摘要时,我有点困惑。……

布尔值 -> 2 字节 -> 范围:True / False

True/False当然是合理的,但是,为什么使用 2 个字节,因为布尔值必须能够表示 2 个值中的任何一个?我的意思是理论上我们可以使用单个位来表示该范围内的任何值。(但我知道这是没有意义的,因为我们使用的是高级语言)

当我问我的老师这个问题时,他表现得好像他从来没有问过自己同样的问题,经过几秒钟的沉思,他只是用这样的答案结束了这句话:“你必须接受它,因为它是什么,它是什么?”是。” 但如果我只是“使用”,并且永远不会对理解感兴趣,那么我不会称自己为优秀的程序员。所以我现在在这里问:

vba中是否有任何原因,为什么Boolean需要2个字节而不是单个字节?

San*_*arn 1

为了向后兼容原来的Microsoft BASIC.

Microsoft BASIC只有3种:

  • Integer(16 位)
  • Single(32 位)
  • String
  • (...以及上述类型的数组)

Boolean数据类型不存在Microsoft BASIC,仅存在于内部(作为表达式的一部分)。

10 INPUT "Do you want more stars? "; A$
20 IF LEN(A$) = 0 THEN GOTO 90
Run Code Online (Sandbox Code Playgroud)

因此,我推测最初Boolean是在内部创建的Integer. 后来升级到 32 位时,Boolean为了向后兼容,仍保留 16 位。我怀疑Byte它是否存在,直到Visual Basic。然而这都是猜测。