C语言整型提升

目录

1.什么是整型提升?

2.整型提升的意义。

3.如何执行整型提升?

4.整型提升的规则

5.实例

总结:


1.什么是整型提升?

C语言中的算数运算表达式总是以整型的精度进行的,为了获得这个精度,表达式的字符和短整型操作数在使用之前被隐式转换为普通类型即整型提升。

2.整型提升的意义。

表达式的整型运算在CPU的相应运算器件内执行,CPU内整型运算器ALU的操作数字的字节长度一般为int的字节长度,同时也是CPU寄存器的长度。因此,两个char类型相加,在CPU执行时要先转换为CPU的标准长度,而通用的CPU是难以实现两个8个比特位的直接相加的,所以小于int类型的表达式计算时要转换为int/unsigned int 然后才能送入CPU中执行运算。

3.如何执行整型提升?

实例1 代码演示

 看到结果是不是简直不敢相信自己的眼睛?不要惊讶,follow me!

这里有一点需要注意变量中存放的是补码,而打印的是源码! 

所以c中的是补码,这里是以%d的形式打印,因此还要一次整型提升。

 所以这就是为什么c=-126。

4.整型提升的规则

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

负数:

例:char a=-1; 11111111

因为符号位是1

所以提升为:11111111111111111111111111111

正数:

例:char b=1;00000001

因为符号位是0

所以提升为:00000000000000000000000001

5.实例

0x表示十六进制,十六进制一位占4个比特位所以以上均不会溢出。

a和b在进行比较时进行了整型提升与原来不同了,而c本身就是int类型无需提升因此是c。

c没有参与整型提升故为1,+c参与了运算发生了整型提升为int所以是4,!c 也没有进行运算故为1;

总结:

char  short 等类型只要参与了运算就会发生整型提升。

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值