C语言学习笔记之(数据类型转换)

一、C语言常见的数据类型

int a;				/*定义整型变量a*/
float b;				/*定义单精度型变量b*/
double c;				/*定义双精度型变量c*/
a=1; 				/*给变量a赋值*/
b=2.1;				/*给变量b赋值*/
c=3.2;				/*给变量c赋值*/

二、数据类型的权重

计算a+b+c时,先将变量a和变量b都转成double型,然后计算,所得结果为double型,各种类型转换方向如图所示。
												float
												  |
												  |
												  V
char,short --> int --> unsigned --> long --> double(权重最高)

1.不同数据类型之间的自动转换

#include <stdio.h>
int main()
{
	int a;					/*定义整型变量a*/
	float b;					/*定义单精度型变量b*/
	double c,e;				/*定义双精度型变量c和e*/
	int d; 					/*定义整型变量d*/
	a=1; 					/*给变量a赋值*/
	b=2.1;					/*给变量b赋值*/
	c=3.2;					/*给变量c赋值*/
	d=a+b+c; 				/*将a+b+c的结果赋给整型变量d*/
	e=a+b+c;				/*将a+b+c的结果赋给双精度型变量e*/
	printf("d=%d,e=%f\n",d,e);	                             /*输出d和e的值*/
	return 0;					/*函数返回值0*/
}

//运行结果如下
d=6,e=6.300000

三、强制数据类型转换

#include <stdio.h>
int main()
{
	int a=2;						/*定义整型变量a,其初值为2*/
	float b=2.78,c=5.2456;				/*定义单精度型变量b=2.78,c=5.2456*/
	a=2+(int)c;					/*计算a的值*/
	b=(int)(1.56+a);					/*计算b的值*/
	printf("a=%d,b=%f,c=%f\n",a,b,c);	                             /*输出a,b,c的值*/
	return 0;						/*函数返回值0*/
}

//输出结果如下
a=7,b=8.000000,c=5.245600

在程序第6行中,将单精度型变量c强制转换为整型,即取5.2456的整数部分5,加2得到的值赋给变量a,所以a等于7,但c仍然为单精度型。在程序第7行中,1.56+a的结果为8.56,将其强制转换为整型,即结果为8,但b仍为浮点型,所以其值为8.000000(遵循了隐式类型转换原则)。