VB6支持无符号数据类型吗?

6
为了与我的同事打赌,我想知道VB6是否本地支持任何无符号数据类型。
我认为答案是“否”,但我似乎找不到任何官方文件来证实这一点。微软文档的简单链接将是一个可接受的答案;提供为什么不支持这些类型的历史性解释将是额外的奖励。

2
我知道在进行COM互操作时,VBA不支持它:无符号类型不是OLE类型的一部分。对于VB6,我不确定。 - Alexandre C.
3
我怀疑在VB中不支持无符号数的原因与大多数其他语言不支持它们的原因相同:它们很少是必要的。 - Gabe
Automation 中唯一支持的无符号整数是 Byte(无符号字符)。 - wqw
5个回答

9
正如Kris所说,它们不被支持,除了Byte数据类型之外,该数据类型仅作为无符号类型提供,可以在此数据类型列表中看到:数据类型摘要 该页面提到了VBA,但它也提到了Visual Studio 6.0,并且支持的数据类型是相同的。
我认为你不会找到官方文档说明为什么他们没有添加无符号数据类型,因为通常情况下这可能不是“为什么我们不支持这个”的情况,而更多的是“是否值得花费额外的工作量来添加这个”。
编辑以提及MarkJ指出的Byte数据类型的例外。

由于我对编程语言的历史大多数都不了解,所以我认为VB的数据类型大致基于C的数据类型。但是我刚在维基百科上发现,VB是基于BASIC开发的,而BASIC比C还要早(虽然两者都是在60年代)。 - Fueled
“VB”代表“Visual Basic”,虽然我很少看到全称被写出来,所以如果您没有使用过它,可能还没有见过这个词。 - Hans Olsson
3
+1 如果指向正确的页面。然而,仔细阅读该页面会显示VB6仅支持一种无符号数据类型:Byte,这是一个无符号1字节整数,类似于C语言的char。VB6还具有IntegerLongCurrency,它们分别是有符号的2字节、4字节和(按比例缩放的)8字节整数。 - MarkJ
@MarkJ:我忘记了Byte,谢谢你提醒我,我已经更新了我的答案以反映这一点。 - Hans Olsson

2
唯一的未签名整数类型是Byte。

1

有一种选项是将十六进制值传递到Long类型中,只要符号位不是值的一部分,它就会被存储为无符号。例如,

&HFFFF = -1 

but &HFFFF& = 65535 

请注意,这些16位值被传递到Long类型中,Long类型是32位的。因此符号位不变。但如果需要32位,则建议使用Double类型,有人之前提到过。
关于通用无符号类型的需求,无符号长整型将是32位二进制数,而字节只有8位。试着用字节类型通过串行端口写入24位寄存器... :) 我认为,在VBA中,符号位像刺一样妨碍了位逻辑。
无论如何,我希望这能帮助到某些人。
谢谢,
Norwood, MA

0

我已经找到了完全相同的线程,但我真的很想看到官方的微软文档,说明为什么不支持无符号类型。 - Fueled

0

VB6不支持此功能,如需了解详情请参考link中的VB.NET说明。


很有趣,这表明这些无符号类型是在VS 2005中首次引入的,这意味着它们在第一个版本的VB.NET中不可用。 - Fueled
链接已失效。 - StayOnTarget

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接