C类型转换

本文通过实例演示了C语言中char类型到int类型的转换过程,包括有符号和无符号char类型的转换规则,并解释了高位填充的原则。

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

int main(void)
{
	signed short A = -10;
	printf("~A = %u\n", ~A);
	char c = 128;
	printf("c=%d\n",c);
	return 0;
}

    通过这个简单的测试,发现自己对类型转换的规则的细节需要做一个分析,以明确转化时的规则。

   1.char转为为int类型,即有符号signed char转换为signed int:
      char类型占1字节内存大小,int类型占4字节,所以char转为int,在int类型变量高位前3个字节要填充填充位的二进制为char类型最高位的比特,如
      char a=0x11;// 0001 0001(1字节)
      int b=a;//前3字节补0
     转化后b的十六进制为0x00000011

     char a=0x81;// 1000 0001
     int b=a;//前三个字节补1    转化后b的十六进制为0xffffff81

2.unsigned char转为int又是不同的,
unsigned char a=0xf1;//或a=0x11;(最高位是1或0的差别)
int b=a;
printf("%x\n",b);
这里无论无符号char类型变量的最高比特是0或1,转为有符号int类型时,int前面高三位字节都是补0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值