当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·高程证书什么时候能发    »显示摘要«
    摘要: 高程证书什么时候能发? ......
 ·问两个问题,谁知道帮帮忙    »显示摘要«
    摘要: using system; namespace values { class values { enum temperatures { wickedcold = 0, freezingpoint = 32, lightjacketweather = 60, swimmingweather = 72, boilingpoint = 212, ......


由char a=255; cout<<(short)a<<" "<<(unsigned short)a<<endl;输出了不同的值,想知道,类型转换的实现原理。

如题。

NO.1   作者: garbriel

原理可不一般呀  
  Have   a   look   at   <<   C++   Primer   3rd   >>   Page   146

NO.2   作者: lbaby

类型转换,我个人认为  
  就是内存的一次访问大小的转换  
   
  由于在计算机中,任何东西都是用0,1   来表示的,所以  
  所有的数据在本质上是没有区别的,如果非要找出区别的话,  
  那就是数据的所代表的意义,及相同的数据被表示的格式不同罢了(比如,int   的2就跟double的2的格式不一样)  
   
  这个相同性,是类型转换的基础  
   
  比如    
   
  char   a=   ;  
   
  和  
  int   i=32;  
   
  假如二进制表示格式为:  
   
    00100000           //a  
  而i   就有可能表示为:  
   
  00000000   00000000   00000000   00100000          
   
  也就是说,它们的有效的二进制(00100000)是一样的  
   
   
  而区别仅在于,二者所占的内存空间大小不同  
   
   
  所以,我们可以把两个数据格式一样的类型从这个类型,转换到那个的类型,(一次访问的内存大小的扩展)而保证不出任何差错  
   
  比如:  
  char   =>   short   =>   int    
  float   =>double  
   
   
  但我们无法保证像这样的转换结果是正确的:  
   
  int   =>char    
   
  float=>double  
   
  double   =>   int    
  ...  
   
   
   
   
   
   
   
 

NO.3   作者: chinajiji

(short)a   ==   (short)255   ==   FFFF,FFFF   =   -1(补码)  
  (unsigned   short)a   ==   (unsigned   short)255   ==   FFFF,FFFF   =   65535(补码)  
   
 


    摘要: 用时下最时髦的纳米材料造的管道,直接贯通地球直径, 使用也很简单,抓住旅客的腿仍下去,即可在彼端登岸咧, 方便有节能,大家认为是不是很可行. ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE