float类型和int类型怎么相加,相加值怎么输出
浮点数做运算,编译器会默认都转成double类型。float转int精度会丢失,所以强制将int转float。
除非强制转换:return (float) (a+b);
计算机硬件进行算术操作时,要求各操作数的类型具有相同的大小(存储位数)及存储方式。例如,由于各操作数大小不同,硬件不能将 char 型( 1 字节)数据与 int 型( 2 或 4 字节)数据直接参与运算;由于存储方式的不同,也不能将 int 型数据与 float 型数据直接参与运算。
然而,由于 C 语言编程的灵活性,在一个表达式或一条语句中,允许不同类型的数据混合运算。
C 语言的灵活性与计算机硬件的机械性是一对矛盾,如处理不好,将会产生错误结果。对于某些类型的转换编译器可隐式地自动进行,不需人工干预,称这种转换为自动类型转换;而有些类型转换需要编程者显式指定,通常,把这种类型转换称为强制类型转换。
扩展资料
在使用强制转换时应注意以下问题:
1、类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。
2、无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。
例1:
main()
{
float f=5.75;
printf("f=%d,f=%f\n",(int)f,f);
}
f=5,f=5.750000
将float f强制转换成int f float f=5.75;printf("(int)f=%d,f=%f\n",(int)f,f); 本例表明,f虽强制转为int型,但只在运算中起作用, 是临时的,而f本身的类型并不改变。因此,(int)f的值为 5(删去了小数)而f的值仍为5.75。
int a,b,c;
a=x;
b=(int)x; //强制类型转换,丢弃小数
c=2+x; //自动类型转换,丢弃小数
y=2+x;
printf("%.0f %d %d\n",x,a,b); //会输出 2 1 1 “.0f”格式会自动四舍五入
printf("%.2f %d\n",y,c); //会输出 3.57 3
2016-01-24