c语言—自动类型转换和强制类型转换

 

目录

一、自动类型转换规律

 二、强制类型转换


一、自动类型转换规律

不同的基本数据类型在进行混合计算时,计算机会进行自动类型转换,规律如下:

根据上图,在多种类型数据混合计算中,计算机中自动将所有数据转换成等级更高的数据类型,由低字节数据类型高字节数据类型即图中从下向上自动转换

 

#include<stdio.h>
int main()
{

	printf("%d %f\n", 7 / 2, 7.0 / 2);//以%f输出时,int类型自动转换成float类型
	printf("混合计算时,float类型等级最高,其他类型向float转换,结果为float类型即4字节: %d\n", sizeof(7 + 8LL + 0.1f)); //
	printf("浮点数默认为double类型,结果为double类型即8字节: %d\n", sizeof('A' + 9ULL + 0.8f + 0.0));
	//定点存储向浮点存储转换,即整数向小数转换
	return 0;
}

计算结果向高等级对齐!定点存储向浮点存储对齐!有符号向无符号转换!

 二、强制类型转换

如果不想进行自动类型转换,我们可以自行定义类型即强制类型转换

强制类型转换的写法:(数据类型)表达式

int a = 3.14;     //自动类型转换

int b = (int)3.14; //强制类型转换

 (float) a 把a转换为浮点型,(int)(x+y) 把x+y的结果转换为整型.

#include<stdio.h>
int main()
{
	printf("强制转换为float4字节类型:%d\n", sizeof((float)3 + 8LL));
	printf("%d %f 转换为double8字节:%d\n", 7 / 2, (double)7 / 2,sizeof((double)7 / 2));//强制类型转换
	printf("单引号下字符A为int类型,通过char强制转换为char类型1个字节:%d\n", sizeof((char)'A'));
	printf("由整数8向浮点数强制转换结果为float类型:%f 括号优先级高,先整型会舍去小数:%f\n", (float)8 / 3, (float)(8 / 3)); 
	return 0;
}

 

注:自动类型转换和强制类型转换都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。因为那块内存本来就存的那个数,只是换个形式使用而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天喜Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值