在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位值
答案 0 :(得分:7)
除了每年略多于365天这一事实(你需要增加97个闰日)之外,每个乘以组成常数的值都是整数文字,因此直到你将它们分配给UInt64全部在整数空间完成。试试这个:
Friend Const xxx As UInt64 = 400UL * 365UL * 24UL * 60UL * 60UL
答案 1 :(得分:1)
在常量的末尾放置一个哈希值,并将其声明为“double”...
我用我的位掩码字段做了这个:
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的东西,那么这对我来说是完美的。
否则,请继续投票我的答案。 :)