整型提升的初步认识

1、什么是整型提升?

C语言进行整型算数运算时,总是以缺省整型类型来进行计算的,为了获得这个精度,表达式中的字符型和短整型的操作数在使用之前需要被转化成普通整型,这种转化成为整型提升。

注意 :这里的缺省整型一般是int,

2、整型提升的意义?

  cpu内整型运算器(ALU)的操作数的字节长度一般是int的字节长度,同时也是CPU通用寄存器的字节长度,所以表达式中各种可能小于int长度的整型值,都必须先转化为int或unsigned int ,然后才能送进CPU去执行计算。

3、如何进行整型提升?

#include <stdio.h>
int main()
{
   char a=-1;//-1为signed int 的值

//-1的原码:10000000 00000000 00000000 00000001
//-1的补码:11111111 11111111 11111111 11111111
//a是一个char的值,所以a的补码:11111111


   char b=2;


//2的原码:00000000 00000000 00000000 00000002
//由于b正整数的原码、反码、补码相同,所以2的补码及原码
//所以b的补码:00000002

  char  c=a+b;

//在此表达式中,a、b需要进行整型提升
//原理是,我们要把char变为int,把一个字节提升为四个字节,
//因此,我们要把a补码向左补齐24个0或1
//补0还是补1,我们要看的符号位,有符号,我们就补1,无符号我们就补0
//不难发现a的补码最左侧的数字位1,因此,我们要向左补24个1

  //a进行整型提升:11111111 11111111 11111111 11111111(补码)
  //b进行整型提升:00000000 00000000 00000000 00000002(补码)
  //a+b的补码   : 00000000 00000000 00000000 00000001(补码)
         c的补码:00000001

      printf("%d\n",c);//此处%d要求我们以整型输出c的值,
 //  我们还要对c进行整型提升,求得四字节的补码,在求得原码,输出的即是,原码对应的值
}

需要进行整型提升一般就是char和short这两种数据类型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值