c语言整型数据不能正常输出,C语言中的整型数据类型转换以及格式化输出问题.docx...

C语言中的整型数据类型转换以及格式化输出问题.docx

C语言中的整型数据类型转换以及格式化输出问题

先附上两张图片

Printf()函数的格式转换参数

各数据类型的长度和表示范围

首先我们来谈整型数据的转换问题,不同类型的整型数据所占的字节数不同,在转换时需要格外留心。

分为两种情况:

第一种情况为将所占字节大的类型数据转换为所占字节小的类型数据,这种情况下只需要截取合适位数的大字节的类型数据到小字节类型数据中即可,例如:unsigned short a=256;char b=a; 则b中的数据截取了a的低八位。

第二种情况为将所占字节小的类型数据转换为所占字节大的类型数据,这种情况下需要涉及到扩展问题,所谓扩展分为两种情况,当需要扩展的小类型数据为有符号数时,即将过小数据的最高位即符号位复制到扩展的位上,比如一个char类型的数据char a=128,二进制表则将其转换为整型数据b即int b=a,相应的b即为1…又或者一个char类型数据127,二进制表则将其转换为整型数据b相应的b即为0….当需扩展的小类型数据为无符号数时,扩展位为全部为0。

另外对于同等大小的不同数据类型之间转换,则是相应的二进制码全额复制。

下面我们来讨论%d和%u的格式化输出问题

我们都知道%d表示输出十进制有符号整数,然而很少有人会注意到%d表示的格式类型其实相当于int类型,即有符号整型数据,占用4个字节,最高位表示符号位,输出的范围在-2147483648到2147483647间。

当我们在用%d输出数据是需要注意类型间的转换问题的。

不同类型的整型数据所占的字

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值