【博客45】char转换为int时的符号位扩展问题

博客记录了C语言里char型转换为int型时符号位扩展的问题。以0x80为例,原本期望char扩展为int后结果是正数80,但实际因符号位问题,扩展出来的位按char符号位扩展,与预期不同。

内容: 记录下char型转换为int型时,符号位扩展的问题

先看下例码:
在这里插入图片描述
此时我们希望得到的结果是正数,因为80是一个正数,char扩展为int后,应该结果是80.

结果:
在这里插入图片描述
分析:此时跟我们想象的不一样,因为char像int扩展时,还有一个要考虑的就是符号位问题。
0x80的二进制表示为:10000000,那么最高位为1,此时扩展为int后,扩展出来的位会按照char类型的符号位来进行扩展,会变成:111…1 10000000.

验证一下:
在这里插入图片描述
结果:
在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值