c语言中关于char类型的溢出下的有无符号int型输出

c语言中关于char类型的溢出下的有无符号int型输出

ID:8957193

大小:81.50 KB

页数:4页

时间:2018-04-13

c语言中关于char类型的溢出下的有无符号int型输出_第1页
c语言中关于char类型的溢出下的有无符号int型输出_第2页
c语言中关于char类型的溢出下的有无符号int型输出_第3页
c语言中关于char类型的溢出下的有无符号int型输出_第4页
资源描述:

《c语言中关于char类型的溢出下的有无符号int型输出》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C语言中关于char类型的溢出下的%d(u)型输出摘要:本调试内容均在Turboc2.0环境下运行过。本机器int为2字节,char型为1字节,char有符号时表示的整型范围是-128~127。需要注意的是:整型数据在内存中是以补码形式存储的。另外如果按%d输出,那么补码中最高位的1就变成符号位(重要)了,1代表负数,而负数是以补码存放的,转换成原码输出,%u而%u是无符号输出,最高那一位不当作符号位(同等重要)。[注意文中分段]第一部分(存储形式)Case1:char为有符号型时(前8位写满倒数第8位的符号

2、位)Case2:char为无符号型时(前8位写满0)第二部分Case1:当以%d输出时,有两种方法:法1:如上表char型数据在内存中的表示形式,%d依据补码进行转换输出:例1:{chara=472;printf(“%d”,a);}//结果为-40例2:{unsignedchara=472;printf(“%d”,a);}//结果为216依然要注意:{unsignedchara=-150;printf(“%d,”,a);printf("%c",a);}//结果为106,j就是说输出%c时截取存储时的低

3、八位就行。【补充的深层理解】例3:{chara=128;printf(“%d”,a-3);}//结果为-131解释:可以看出当以%d输出时,是a的存储1111111110000000+1111111111111101(-3的补码)=1111111101111101故为-131例4:{chara=128;printf(“%c”,a-3);}//结果为}(125对应的符号为})解释:可以看出当以%c输出时,是以a的存储低字节10000000+11111101(-3的补码)=01110011故为125法2:

4、注意:一个整型类型的变量,用任何一个超过表示范围的整数初始化,得到的值为用该整数范围作模运算后的值。根据上图,如上例1,结果为472-2*256(模)=-40;(为何-40,要在有符号的-128~127内)根据上图,如上例2,结果为472-256(模)=216;(同理,要在0~255内)*延伸:{inta=42896;printf(“%d”,a);}//结果为42896-65536(模)=-22640(在范围内)Case2:当以%u输出时,只有一种方法:如上表char型数据在内存中的表示形式,%u依据补码进行

5、直接输出:例5:{chara=472;printf(“%u”,a);}//结果为65496--安徽工业大学工商学院--刘伟伟2013年7月

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

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

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