隐式类型转换
1.算术转换
如果表达式中有多个占内存大小相同的数据类型,则转换规则如下:
1.如果表达式中存在int类型与float类型占用的内存大小相同且最大,则以float类型为准,将其他类型数据都转换为float类型。
2.如果表达式中存在long类型与float类型占用的内存大小相同且最大,则以float类型为准,将其他类型数据都转换为float类型。
3.如果表达式中存在int类型与long类型占用的内存大小相同且最大,则以long类型为准,将其他类型数据都转换为long类型。
公式如下:
int a = 5;
float b = 2.5;
double result = a + b;
printf("%d\n", a);
printf("%.2f\n", b);
printf("%.2f\n", a + b);
输出结果
2.赋值转换
赋值时,若变量的数据类型与赋值的数据类型不同,编译器会将“=”右边的值先转换为对应变量的数据类型,再将值赋给变量,例如将一个浮点数赋值给int类型的变量,代码如下:
int c = 4.7;
printf("%d\n", c);
float d = 4;
printf("%.2f\n", d);
int e = 'A';
printf("%d\n", e);
输出结果
3.输出转换
输出转换有一定的局限性。它常用于int类型与char类型数据的转换,而用于其他类型数据的转换时常起参与运算,常常会发生错误
公式如下:
char f = 'C';
printf("%d\n", f);
结果如下
强制转换
在C语言中,强制类型转换是开发者显式地将一种数据类型转换为另一种数据类型的操作
代码如下:
float g = 9.57;
int g_int = (int)g;
printf ("%d\n",g_int);
结果如下