数据类型 转换

数据类型 转换

ID:44583199

大小:58.50 KB

页数:13页

时间:2019-10-23

数据类型 转换_第1页
数据类型 转换_第2页
数据类型 转换_第3页
数据类型 转换_第4页
数据类型 转换_第5页
资源描述:

《数据类型 转换》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、数据类型转换各类整数之间的转换C语言中的数分8位、16位和32位三种。属于8位数的有:带符号字符char,无符号字符unsignedchar。属于16位数的有:带符号整数int,无符号整数unsignedint(或简写为unsigned),近指针。属于32位数的有:带符号长整数long,无符号长整数unsignedlong,远指针。IBMPC是16位机,基本运算是16位的运算,所以,当8位数和16位数进行比较或其它运算时,都是首先把8位数转换成16位数。为了便于按2的补码法则进行运算,有符号8位数在转换为16位时是在左边添加8个符号位,无符号8位数则是在

2、左边添加8个0。当由16位转换成8位时,无论什么情况一律只是简单地裁取低8位,抛掉高8位。没有char或usignedchar常数。字符常数,像"C",是转换为int以后存储的。当字符转换为其它16位数(如近指针)时,是首先把字符转换为int,然后再进行转换。16位数与32位数之间的转换也遵守同样的规则。注意,TurboC中的输入/输出函数对其参数中的int和unsignedint不加区分。例如,在printf函数中如果格式说明是%d则对这两种类型的参数一律按2的补码(即按有符号数)进行解释,然后以十进制形式输出。如果格式说明是%u、%o、%x、%X,则

3、对这两种类型的参数一律按二进制(即按无符号数)进行解释,然后以相应形式输出。在scanf函数中,仅当输入的字符串中含有负号时,才按2的补码对输入数进行解释。还应注意,对于常数,如果不加L,则TurboC一般按int型处理。例如,语句printf("%081x",-1L),则会输出ffffffff。如果省略1,则输出常数的低字,即ffff。如果省略L,则仍会去找1个双字,这个双字的就是int常数-1,高字内容是不确定的,输出效果将是在4个乱七八糟的字符之后再跟ffff。在TurboC的头文件value.h中,相应于3个带符号数的最大值,定义了3个符号常数:

4、#defineMAXSHORT0X7FFF#defineMAXINT0X7FFF#defineMAXLONG0X7FFFFFFFL在TurboCTools中,包括3对宏,分别把8位拆成高4位和低4位,把16位拆成高8位和低8位,把32位拆成高16位和低16位。uthinyb(charvalue)utlonyb(charvalue)uthibyte(intvalue)utlobyte(intvalue)uthiword(longvalue)utloword(longvalueu)在TurboCTools中,也包括相反的3个宏,它们把两个4位组成一个8位,把

5、两个8位组成一个16位,把两个16位组成一个32位。utnybbyt(HiNyb,LoNyb)utwdlong(HiWord,Loword)utbyword(HiByte,LoByte)实数与整数之间的转换TurboC中提供了两种实数:float和double。float由32位组成,由高到低依次是:1个尾数符号位,8个偏码表示的指数位(偏值=127),23个尾数位。double由64位组成,由高到低依次是:1个尾数符号位,11个偏码表示的指数位(偏值=1023),52个尾数位。通过下列公式,可以由尾数和指数计算出所代表的实数值:X=±1.尾数*2(指数

6、-偏值)下列几种情况下,此公式不成立:指数=000...0且尾数=00...0,则X=X=±0指数=000...0且尾数!=00...0,则X=±0.尾数*2(1-偏值)指数=11....1且尾数=00...0,则X=±∞指数=11....1且尾数!=00...0,则X是一个无效数在TurboC的头文件value.h中,相应于实数所能达到的最大最小值,定义了如下几个符号常数:#defineMAXFLOAT3.37E+38#defineMINFLOAT8.43E-37#defineMAXDOUBLE1.797693E+308#defineMINDOUBLE

7、2.225074E-308实常数是按double格式存放的,如果想按float格式存放,则必须加后缀F,如:1.23E+4F。当把实数强制转换为整数时,采取的是“向零靠拢的算法",如:float值:65432.6-65432.6转换为long;65432-65432转换为unsigned:65432104如果不希望“向零靠拢”,而希望“四舍五入”,则必须由程序员自己处理。一种办法是先加上(符号位/2),然后再进行类型转换。应该注意的是:如果被转换的实数值超过了目标类型的表达范围,则会产生错误。例如上面的float值-65432,6转换为unsignedi

8、nt值时,由于超过了目标范围,所产生的104就是错误的。在65432。6转换为u

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。