tempad
Readygo技术搜索引擎 >>软件工程 >> 在数据类型后面的括号内加上一个数,表示什么样的操作?

在数据类型后面的括号内加上一个数,表示什么样的操作?

Readygo技术搜索引擎 网络搜索 efish 2008-1-17 7:17:09

在数据类型后面的括号内加上一个数,表示什么样的操作?

楼主dedema(思想恐龙)2001-11-18 20:13:48 在 Delphi / VCL组件开发及应用 提问

var   s:shortint;  
          b:byte;  
          d:dword;  
  begin  
      s:=-1;  
      b:=byte(s);  
      d:=dword(s);//具体的过程怎么样?  
      showmessage(inttostr(b)+"     "+inttostr(d));  
  end;  
  欢迎指教! 问题点数:50、回复次数:5Top

1 楼cobi(我是小新)回复于 2001-11-18 20:37:13 得分 10

把shortint类型的数字转换成byte或dwordTop

2 楼cobi(我是小新)回复于 2001-11-18 20:45:56 得分 10

因为byte和dword都是无符号的整数,所以返回值就是他们的最大值,255和4294967295Top

3 楼dedema(思想恐龙)回复于 2001-11-18 21:23:19 得分 0

好。谢   谢!  
  不过,还不够的!  
  我是问转化时对内存的处理过程!Top

4 楼gzmhero(hihihi)回复于 2001-11-23 16:00:58 得分 30

b:=Byte(s):取了s的低2位,赋值给b。  
  d:=DWord(s):取了s的值,赋值给d的低4位,高为填0。Top

5 楼dedema(思想恐龙)回复于 2001-11-24 10:45:07 得分 0

对楼上回复!  
  b:=Byte(s):取了s的低2位,赋值给b。  
  d:=DWord(s):取了s的值,赋值给d的低4位,高为填0。    
   
  没细心看,就以为己经解决了这个问题了,就给分了。现在想了一下,疑问丛生!  
  s的低2位?2位,是bit还是Byte?s本身只有一个字节大小,它的低2位最多只能表示3这么大的一个数。因此b就应等于3。可是,b的值是255。  
  对d:=dword(s),一样的,s的补码为二进制的11111111,即十进制的255。d的低4位,这个4位是四个bit还是4个字节,s的8位值怎么赋给d的低四位吧?就算s的值填到了d的低位,d的高位按回复者所说的填为0,那d的值也只有255。可是d的值为$ffffffff。  
   
  我改问题为如下过程:  
  var   s:shortint;  
          b:byte;  
          d:dword;  
  begin  
      s:=-1;//变量s的内存地址是-1的补码,11111111.....(8个1)  
      b:=byte(-1);//转化成byte类型的整数,这时变量s存放的11111111被当成一个byte类型的变量,即255。  
      showmessage(inttostr(b));//显示255  
      d:=dword(s);//把s(在内存表现为11111111)转化成dword类型的整数。  
      showmessage(inttostr(d));//显示4294967295即二进制的11111111   11111111   11111111   11111111    
      d:=dword(b);//把s(在内丰表现为11111111)转化成dword类型的整数。  
      showmessage(inttostr(d));//显示结果为255  
  end;  
  为什么d:=dword(s)与d:=dword(b)这两个语句中,s与b在内存中都是表现为11111111,而结果却不相同。  
  这就是我要问的真正意思!。。。。。。。菜鸟发功,不要笑!  
  而如果是s:=shortint(d)或b:=byte(d),我是知道它的过程的,即把d的最低位上的一个字节搬给s或b。  
   
  Top

责任编辑: efish 参与评论 查找更多:
相关文章
delphi7 flash出错! delphi7 flash出错!
CString类型的“+” CString类型的“+”
有谁知道在VB中如何做一个可以传运行参数的EXE文件. 有谁知道在VB中如何做一个可以传运行参数的EXE文件.
答者有分:简单的问题。 答者有分:简单的问题。
计算机网络这门课有必要学好吗? 计算机网络这门课有必要学好吗?
怎样打印 WebBrowser 中的内容,谢谢! 怎样打印 WebBrowser 中的内容,谢谢!
谈谈MTS、COM+的未来 谈谈MTS、COM+的未来
一个非常奇怪的问题。ADO+ACCESS+VB.NET 一个非常奇怪的问题。ADO+ACCESS+VB.NET
搞稿喔!才送出的 100 分,再送 100 分,对昨天问题… 搞稿喔!才送出的 100 分,再送 100 分,对昨天问题的补充 居然会这样??!!晕倒~~~ TO: hehongyu2000(Henry)
高分求Together Control Center 6 和 XMLSPY 5 的注… 高分求Together Control Center 6 和 XMLSPY 5 的注册机!
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的readygo.com.cn

分类导航
Readygo技术搜索引擎