例如,我想将&H80000000
分配给64位有符号整数变量:
Dim a As Long = &H80000000
但是,整数a
的值是&HFFFFFFFF80000000
,而不是&H80000000
。
我试图调用CULng
来绕过符号扩展。尽管如此,它还是说"常量表达式在类型'ULong'中不可表示"。我猜想这是因为Visual Basic禁止将负整数赋值给无符号变量。
我使用的是Visual Basic 2010。. NET Framework 4.0)
Dim a As Long = &H80000000L
使用字面值后缀L
告诉编译器您希望该值为长字面值。否则,它将被解释为表示负值的有符号整数字面值(-2147483648
)。或者,您可以使用后缀UI
来表示无符号整数。
示例代码:
Dim a As Long = &H80000000 ' Int32 literal -2147483648
Dim b As Long = &H80000000L ' Int64 literal 2147483648
Dim c As Long = &H80000000UI ' UInt32 literal 2147483648
Console.WriteLine(a.ToString("X")) ' FFFFFFFF80000000
Console.WriteLine(b.ToString("X")) ' 80000000
Console.WriteLine(c.ToString("X")) ' 80000000