对于,以下代码:
Dim lLength As Long
lLength = 350
If lLength <= &HFFFF Then
MsgBox "True"
EndIf
lLength <= &HFFFF
正在返回False
。
我的猜测是&HFFFF
被解释为Integer
值-1
,因此语句的结果为False
。
我也尝试了&H0000FFFF
但IDE删除了前导0000
,我也尝试了&HFFFFL
,这会导致编译错误。
我可以在VB6中的Hex文字中表示65535
吗?
答案 0 :(得分:4)
尝试将其明确标记为Long
,并带有&符号&amp ;.
&HFFFF&
没有尾随&符号的 &HFFFF
是Integer
字面值,VB6中的Integer
是带符号的2字节整数,范围为-32,768到+32,767。
答案 1 :(得分:2)
你是对的。这是因为&amp; HFFFF被转换为有符号整数,范围为-32,768到+32,767。
使用&amp;。
将其显式转换为longPrivate Sub Form_Load()
MsgBox CLng(&HFFFF) '--> -1
MsgBox CLng(&HFFFF&) '--> 65535
End Sub