VB简单问题
Dim a As Long
a = &H8000
此时VB下显示a的值为-32768,为什么?
照理
8000(16进制)=8*(16的3次方)=8*(2的12次方)=8*4096=32768
难道VB把a看成整型了,认为a=32768溢出,所以为负数
/////////////
注:在C语言里
long a;
a=0x8000
a此时等于32768
问题点数:20、回复次数:4Top
1 楼holydiablo(香菜鱼头)回复于 2002-12-09 15:30:29 得分 10
应该是&H8000的问题
它的值就是-32768Top
2 楼Tenner(BE.Tenner)回复于 2002-12-09 15:31:21 得分 10
在VB中四位的十六进制数如果大于&H7FFF就被认为是负数
解决方法为加一句判断:
a = &H8000
if a<0 then a=65536+a
Top
3 楼holydiablo(香菜鱼头)回复于 2002-12-09 15:43:21 得分 0
应该说是4位16进制的存放是16位的,所以超过&H7FFF就负了,而再多的话就又对了,比如a=&H10000,就是65536,这时候的存放是32位的,而这个转换又是系统默认的,无法更改,我是想不出来了Top
4 楼TrueZq(xx)回复于 2002-12-09 19:53:20 得分 0
上面几位好像没有说对噢
我随后看了MSDN,改为a = &H8000& 就对了。^_^
VB也真是的,为什么不把a = &H8000 当作错误语句。Top




