整型提升(integral promotions)

又看了看C++ Primer,整型提升的原则是"最大限度保持精度"。

例1

int ival = 0;ival = 3.541 + 3

首先3.541+3.000(以最大的精度为标准)

然后6.541(求和)
最后6(赋值)


例2

void main()
{
 	int a=-20;
 	unsigned int b=6;
 	printf("%d\n",a+b);
 	cout<<a+b<<endl;
	return;
}
输出

-14

4294967282


为什么这两个输出不一样呢?
printf的%d是当做singed int处理的。
加法先做整型提升,结果是一个unsigned int。
printf看到了%d,把它当做了signed int。
cout的类型以参数中精度最高的为准,所以是unsigned int。
如果改为printf("%u\n",a+b)则输出就一样了。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值