在c语言中的类型转换总的来说分为两大类:
1、隐式转换(自动转换)
-
运算转换
不同类型的数据混合运算时会自动转换为同一类型,这里有一个类型的转换规则如下图:
在不同类型进行运算时,低级的数据类型将自动转换成高级的类型。值得注意的是:
- char,short类型在运算时必定转化为int类型
- float类型在运算时必定转化为double类型
-
赋值转换
在进行赋值时,将右边的数据类型自动转化为左边的数据类型。这里有个问题就是精度丢失的问题,比如:
main()
{
float x = 3.6;
int a = x;
printf("x=%f,a=%d",x,a);
}
输出结果:
x=3.600000,a=3
int类型直接截取float的整数部分造成精度丢失。
-
返回值转换
当某个方法有返回值时,会将返回值自动转换为方法规定的类型。比如:
int show(){
float a = 3.3;
return a;
}
main()
{
if(show()==3){
printf("yes");
}
else{
printf("no");
}
}
输出结果:
yes
-
函数调用转换
在c语言中,会自动将传入方法的实参类型转化为与形参相同。比如:
int show(int a){
if(a==1){
return 1;
}
else{
return 0;
}
}
main()
{
float m = 1.1;
int result = show(m);
printf("%d",result);
}
输出结果:
1
2、显示转换(强制转化)
即(类型名)表达式