2

对于,以下代码:

Dim lLength As Long
lLength = 350
If lLength <= &HFFFF Then
    MsgBox "True"
EndIf

lLength <= &HFFFF正在回归False

我的猜测是它&HFFFF被解释为Integer-1,因此该语句的计算结果为False.

我也尝试过&H0000FFFF,但 IDE 删除了前导0000,我也尝试过&HFFFFL导致编译错误。

我可以65535在 VB6 中用十六进制文字表示吗?

4

2 回答 2

4

Long尝试使用尾随 &将其显式标记为 a 。

&HFFFF& 

&HFFFF没有尾随 & 符号的是Integer文字,Integer在 VB6 中是有符号的 2 字节整数,范围为 -32,768 到 +32,767。

于 2013-07-17T07:50:21.093 回答
2

你说的对。这是因为 &HFFFF 被转换为范围为 -32,768 到 +32,767 的有符号整数。

使用 & 将其显式转换为 long。

Private Sub Form_Load()
    MsgBox CLng(&HFFFF) '--> -1
    MsgBox CLng(&HFFFF&) '--> 65535
End Sub
于 2013-07-17T08:07:50.157 回答