隐式转换 integral promotion

本文解析了C语言中变量进行算术运算时的隐式类型转换规则,包括integral promotion和usual arithmetic conversion的过程,并通过实例代码说明了char类型变量在进行加法运算时如何被提升为int类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于变量 a1 OP a2

c语言有一套隐式转换的规则

如果a1 a2都为小于integer类型,如short,char

即使a1,a2都为同一类型,也会进行转换

如果你还是感觉不知所云 那么请看下面代码


#include <iostream>

int main()
{
	char c1 = 1;
	char c2 = 2;
	printf("%d", sizeof(c1 + c2));
	return 0;
}

c1,c2都为char型,在做加法过程中,类型大小已经为4,被intergal promotion为int类型了。


至于高于int的隐式转换,则以最高位数的参数为准转换


+ - * / % > < >= <= == !=运算符都需要做Usual Arithmetic Conversion

单目运算符+ - ~只有一个操作数,移位运算符<< >>两边的操作数类型不要求一致,这些运算不需要做Usual Arithmetic Conversion,但也需要做Integer Promotion


资料:http://learn.akae.cn/media/ch15s03.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值