C语言基础——整型提升

整形提升:

在表达式计算时,各种整形首先要提升为int类型,如果int类型不足以表示则要提升为unsigned int类型;然后执行表达式的运算。

整形提升的原因与cpu运算数据效率和精度有关,就不介绍了,感兴趣的小伙伴可以自行了解

❗❗❗如何提升

  1. 写出要整形提升的数据的补码
  2. 观察原变量是有符号还是无符号
  3. 有符号数在补码前面补变量里面存放的补码的最高位数字,无符号数在补码前面补0
  4. 提升完毕

道理大家都懂,不来个例子怎么理解

int main()
{
	char a = 128;
	int b = 100;

	printf("%d\n", a+b);
	return 0;
}

在这里读者可以自己算一下结果,看看自己是否理解整型提升。

在这里插入图片描述

计算过程:

  1. char应该提升为int再与int计算
  2. 128的补码与源码相同为0000 0000 0000 0000 0000 0000 1000 0000,a为char类型8个bit位,所以a里面存放的是1000 0000
  3. a为有符号整形(不同编译器可能不同),在补码前面补a里面存放补码的最高位“1”
  4. 补位完成后为1111 1111 1111 1111 1111 1111 1000 0000,至此提升完毕
  5. 计算源码为:1000 0000 0000 0000 0000 0000 1000 0000,十进制数字为-128,
  6. 两整形运算-128+100=-28,至此计算完毕

额外补充:运算中只要出现浮点数,那么将所有数据都转换为double运算

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值