【发布时间】:2015-05-23 00:00:19
【问题描述】:
这很好用:
Public Const test As ULong = 1 << 30
这不太好用:
Public Const test As ULong = 1 << 31
它会产生这个错误:
常量表达式在“ULong”类型中不可表示
如何让它发挥作用?
这确实有效:
Public Const test As Long = 1 << 31
但我必须使用 ULong。
【问题讨论】:
这很好用:
Public Const test As ULong = 1 << 30
这不太好用:
Public Const test As ULong = 1 << 31
它会产生这个错误:
常量表达式在“ULong”类型中不可表示
如何让它发挥作用?
这确实有效:
Public Const test As Long = 1 << 31
但我必须使用 ULong。
【问题讨论】:
您无法使用 Long 数据类型移动 1 << 31,因此您会收到此错误。
但是,这是因为 1 作为整数文字,被视为 Int32,这是默认的整数文字。
您应该通过将其定义为来解决此问题:
Public Const test As ULong = 1UL << 30
Public Const test2 As ULong = 1UL << 31
UL 标志表示将 1 设为无符号长整数。 See Type characters for details.
【讨论】:
尝试以下方法:
Public Const test As ULong = 1UL << 31
您需要明确告诉编译器您正在对 ULong 执行操作。
C# 等效的工作原理:
public const ulong test = 1UL << 31;
【讨论】: