C语言第十二集后续(整型提升)

*111.大多数编译器中char都是默认为有符号的char,但是int默认都是有符号的

。有符号整形提升是按照变量的数据类型的符号位来提升的

.无符号整形提升,高位补零

ASCII码值是0到127

1.int 类型的数据存入char类型的变量

int 类型的125为a

00000000000000000000000001111101

将它存入char类型的变量当中则会发生截断

只剩下

01111101

再如

int 的10b

00000000000000000000000000001010

截断后为00001010存入char

上边得到的char两个数据相加的话

01111101

00001010

要整形提升才能相加

(上边的两个char都是有符号的)

所以二者经过整形提升后变为了

00000000000000000000000001111101

00000000000000000000000000001010

二者再相加,为

00000000000000000000000010000111

{

另外,负数整形提升后不一定不变

因为高位会补零

而且补零后为补码

}

如果再将上边所加得的值存入一个char类型的变量里边

则又要发生整形折断

即变为了10000111

这时如果用%d打印的话(因为%d是打印有符号的整数的)

因为此时和为10000111

所以整形提升后为11111111111111111111111110000111

这个为补码

转为原码为10000000000000000000000001111001

即为-121

而如果a+b不存入char类型的c中,则输出135

3.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值