首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

为什么 (1)&hfefe& = 65278 而 &hfefe = -258 (2) &hfefefefe& = -

2012-04-25 
为什么 (1)&hfefe& 65278而 &hfefe -258(2) &hfefefefe& -16843010而问题有两个:(1)&hfefe& 65278

为什么 (1)&hfefe& = 65278 而 &hfefe = -258 (2) &hfefefefe& = -16843010 而
问题有两个:
(1)&hfefe& = 65278 而 &hfefe = -258
(2) &hfefefefe& = -16843010 而 &hfefefe = 16711422  

详细代码如下:
  Debug.Print (" &hfefe& = " & Val("&h" & "fefe&") & " 而 &hfefe = " & Val("&hfefe") & " " _
  & Chr(13) & Chr(13) & " &hfefefefe& = " & Val("&hfefefefe&") & " 而 &hfefefe = " & Val("&hfefefe")) & " "


[解决办法]
数据类型不一样啊。很正常
[解决办法]
1、&HFEFE& 中的最后一个& 定义了这个数据时一个Long类型,也就是4个字节,化作二进制数据:
00000000 00000000 11111110 11111110 ;符号位是:0,也就是正数,所以&HFEFE&就是:65278
2、&HFEFE 没有显式的声明他是什么类型,依据VB的隐形类型定义,&HFEFE占用2个字节,也就是Integer类型的变量,化作二进制是:11111110 11111110 ;符号位是:1, 是负数,负数再计算机中的表示是补码,也就是:&HFFFF-&HFEFE+1=&H102=258 再加上负号,也就是-258

3、同1道理,只是这次符号位是1,是负数,的用补码表示了。所以是:-16843010
4、这个稍微有些不同,由于超过2个字节,所以系统会默认&HFEFEFE是Long类型,也就是4字节数据,但它只占用3个字节,所以最高字节是0,也就是说它是正数。所以&HFEFEFE=16711422
[解决办法]
Long 数据类型

Long(长整型)变量存储为 32 位(4 个字节)有符号的数值形式,其范围从 -2,147,483,648 到 2,147,483,647。Long 的类型声明字符为和号 (&)。

[解决办法]
要了解这个,你就得学习Varaint类型,变体类型。

这个类型功能强大,它会自动给你转换成相应的类型,做数据处理

VB code
Option ExplicitPrivate Sub Command1_Click()    Dim varP As Variant        varP = &HFEFE&    Debug.Print varP        varP = &HFEFE    Debug.Print varP        varP = &HFEFEFEFE    Debug.Print varP        varP = &HFEFEFE    Debug.Print varPEnd Sub
[解决办法]
&hfefe& 最后的&表示该数据为Long类型,所以解释为正数
&hfefe 没有最后的&,默认匹配为Integer类型,你的数值其最高位为1,所以解释为负数

热点排行