关于C语言整型提升的讲解

目录

1.什么是整型提升

2.整型提升的意义

3.整型提升是怎么提升的

4.整型提升的实例


 

1.什么是整型提升

C语言中的整型算术运算总是以缺省(默认)整型类型的精度来进行的。为了获得这个精度,表达式中的字符短整型操作数在使用之前会被转换为普通整型。那么将这种转换称为整型提升。

理解:整型提升的对象是两种:①表达式中的字符类型和短整型

②整个过程是操作系统偷偷做的,不会表现出来,先将数据进行整形提升过后再参与运算。

2.整型提升的意义

①表达式的整型运算要在CPU的相应运算器件内执行1,cpu内整型运算器的操作数的字节长度一般就是int的字节长度为4个字节,同时也是cpu的通用寄存器的长度。因此,即是两个char类型的相加,在cpu执行时实际上也要先转换为cpu内整型操作数的标准长度。

通用cpu是难以直接实现两个8比特字节直接相加运算(虽然机器指令中可能有这种字节相加指令)。

比如:一个char是1个字节,为八个比特位,当两个char相加的时候就有可能发生进位,那么就有可以得到一个9比特位的数据,那么存储空间只有8个比特位就可能发生截断,数据就是错误的。

所以,表达式中各种长度小于int长度的整型值,都必须转换为int,再送入cpu进行运算。 

3.整型提升是怎么提升的

总的规则:整型提升是根据变量的数据类型的符号位来进行提升的

对于负数来说:

char c1 = -1;

c1在内存中存储的二进制序列(补码)为:

11111111

整型提升的时候,高位补充符号位,即补充1

整型提升后的结果为:11111111 11111111 11111111 11111111

对于正数来说:

char c2 = 1;

c2在内存中存储的二进制序列(补码)为:

00000001

整型提升的时候,高位补充符号位,即是补充0:

00000000 00000000 00000000 00000001

对于无符号的整型来说高位直接补0 

4.整型提升的实例

大家也可以看一下上一篇题解,也是运用整型提升的实例

整型提示题解实例 

这篇文章可以作为整型在内存中的存储相关篇章的辅助知识,也是在学习C语言路上的一个热门基础知识,大家可以结合例子好好理解一下,不对的地地方欢迎大家指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值