2

在 Visual Basic 中

Friend Const xxx As UInt64 = 400 * 365 * 24 * 60 * 60 ''// Number of secs in 400 years

这失败并出现错误

constant expression not representable in type integer

问题是 400 * 365 * 24 * 60 * 60 大于 2^32

我会认为通过将常量声明为 UInt64 可以为其分配 64 位值

4

2 回答 2

7

除了每年略多于 365 天(您需要添加 97 个闰日)之外,每个乘以组成常量的值都是整数文字,因此在您将它们分配给 UInt64 之前,它是全部在整数空间中完成。试试这个:

Friend Const xxx As UInt64 = 400UL * 365UL * 24UL * 60UL * 60UL
于 2009-01-27T21:22:30.483 回答
1

在常量末尾放置一个哈希,并将其声明为“双精度”...

我用我的位掩码字段做到了这一点:

Public Const EDIT_TRANSACTION              As Double = 1073741824
Public Const EDIT_DWRDELIVERY              As Double = 2147483648#
Public Const ENTER_DWRORDER                As Double = 4294967296#
Public Const DELETE_DWRORDER               As Double = 8589934592#
Public Const DELETE_TRANSACTION            As Double = 17179869184#
Public Const DELETE_WATERORDER             As Double = 34359738368#
Public Const ENTER_METERREADING            As Double = 68719476736#

** 编辑 **

我想我在这方面被标记了,因为这是我为 VB6 编写的旧代码,而不是你所要求的。所以,如果有人阅读这篇文章使用的是 VB6,并且必须将 Bitmask 字段传递给 SQL 之类的东西,那么这对我来说非常有效。

否则,请继续投票否决我的答案。:)

于 2009-01-27T21:24:22.040 回答