数据类型的转换

数据类型的转换分两种:隐式转换和强制转换
隐式转换的特点:如果表达式中不同数字的数据类型不同,gcc编译器先将不同的数据类型转换成相同的数据类型

隐式转换分三种:
1.隐式转换中必须把占内存小的类型转换成占内容大的类型;
	例如:
		int a = 0,c; //各占四个字节
		char b = 2;  //占一个字节
		c = a + b;	 //gcc会先将char类型的转换成int类型的后再去计算

2.如果既有整形数据类型还有浮点数据类型,gcc编译器自动将整形数据类型转换成浮点类型;

3.如果既有有符号数据类型还有无符号数据类型,gcc编译器自动将有符号数据类型转换成无符号类型;

/*数据类型强制类型转换演示*/
#include <stdio.h>
int main (void)
{
	//表达式里面有整数类型1和浮点类型的0.9,所以gcc会将整数类型的1转换成double类型的(默认为double,float需要后加f),所以这里的就是double类型的数据类型的大小为8;
	printf("sizeof(1 ? 1 : 0.9)是%d\n",sizeof(1 ? 1 : 0.9));

	//下面的两个式子里面,第一个全是有符号类型的,计算出来的结果是0,因为-4<0;
	//下面的有无符号类型的,所以需要将其全部转换成无符号类型的,对于-7的无符号类型是一个很大的数
	//所以-7 + 3u 肯定大于0的,所以就是为1
	printf("-7+ 3 > 0结果是%d\n",-7 + 3 > 0);
	printf("-7+ 3u > 0结果是%u\n",-7 + 3u > 0);
	
	printf("-7转换成无符号的大小为%u\n",-7);

	return 0;
}
强制转换(建议使用的转换,目的:提高代码的可读性)

1.强制类型转换的语法格式:目标类型 变量 = (目标类型)原类型变量
例如:
	char a = 90;
	int b = (int)a;//gcc强制将a转换成了int类型再赋值给B

2.注意:强制类型的转换可能造成数据的丢失
例如:
	char a = (char)300;//数据丢失了
	printf("a = %d\n",a); //a = 44;
所以:强制转换都是小转大,或者相等;	
	
切记:不管哪种类型转换,都不会改变变量本身的值
	例如:
	int a = 555;
	char b = (char)a;
	printf("b= %d,a = %d\n",a, b); //a = 555,b = 43;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值