【问题标题】:Does VB6 support unsigned data types?VB6 支持无符号数据类型吗?
【发布时间】:2011-02-02 13:50:39
【问题描述】:

为了和我的一位同事打赌,我​​想知道 VB6 是否原生支持任何无符号数据类型。

我相信答案是“不”,但我似乎找不到任何官方文件证实这一点。一个指向 Microsoft 文档的简单链接是可以接受的答案;关于为什么不支持此类类型的历史理由将是一个额外的好处。

【问题讨论】:

  • 我知道当您进行 COM 互操作时 VBA 不支持它:无符号类型不是 OLE 类型的一部分。我不确定 VB6。
  • 我怀疑 VB 不支持无符号数字,原因与大多数其他语言不支持它们的原因相同:它们很少需要。
  • 自动化中唯一支持的无符号整数是字节(无符号字符)

标签: vb6 unsigned


【解决方案1】:

正如 Kris 所说,它们不受支持,除了 Byte 数据类型,它只能作为无符号使用,如以下数据类型列表所示:Data Type Summary

该页面提到了 VBA,但也提到了 Visual Studio 6.0,支持的数据类型相同。

我认为您不会找到官方文档说明他们为什么不添加无符号数据类型,因为这通常是错误的方法,因为它可能不是“我们为什么不应该支持这个”的情况就像“添加这个是否值得额外的努力”。

编辑提及 MarkJ 指出的 Byte 数据类型的例外。

【讨论】:

  • 由于我对编程语言的历史一无所知,我假设 VB 的数据类型大致基于 C 的数据类型。但正如我刚刚在 Wikipedia 上发现的那样,VB 是基于BASIC,它是在 C 之前开发的(尽管都是在 60 年代)。
  • 嗯,VB 代表“Visual Basic”毕竟,虽然我不经常看到写出全名,所以如果你没有使用过它,你可能不会看到。
  • +1 用于链接到正确的页面。然而,仔细阅读该页面会发现 VB6 支持 one 无符号数据类型:Byte,它是一个无符号的 1 字节整数,如 C char。 VB6 也有 Integer、Long 和 Currency,它们分别是有符号的 2 字节、4 字节和(缩放的)8 字节整数。
  • @MarkJ:我忘记了字节,谢谢你提醒我,我已经更新了我的答案以反映这一点。
【解决方案2】:

唯一的无符号整数类型是字节。

【讨论】:

    【解决方案3】:

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

    &HFFFF = -1 
    
    but &HFFFF& = 65535 
    

    请注意,这些 16 位 val 被传递到 Long 类型,即 32 位。所以符号位是不变的。但如果你需要 32 位,一个建议是使用 Double 类型,之前有人提到过。

    关于一般无符号类型的需求,Unsigned Long 将是 32 位二进制,而 Byte 只有 8 位。尝试通过具有字节类型的串行端口写入 24 位寄存器.. :) 我的看法是,在 VBA 中,符号位就像位逻辑中的一个碎片..

    无论如何,我希望这对某人有所帮助。

    干杯,

    马萨诸塞州诺伍德

    【讨论】:

      【解决方案4】:

      不支持。

      关于模拟它们的一些有用信息:http://www.vbforums.com/showthread.php?t=578430

      【讨论】:

      • 我已经找到了完全相同的线程,但我真的很想看看微软官方文档说明为什么不支持无符号类型。
      【解决方案5】:

      VB6 不支持,它是按照 VB.NET 中 link 的说明添加的。​​

      【讨论】:

      • 这很有趣,它表明这些无符号类型是在 VS 2005 中首次引入的,这意味着它们在 VB.NET 的第一个版本中不可用。
      • 链接失效
      猜你喜欢
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      相关资源
      最近更新 更多