#include
int main()
{
float c,f;
scanf("%f",&f);
c=(5.0/9)*(f-32);
printf("摄氏度为%f\n",c);
return 0;
}
语句c=(5.0/9)*(f-32); 中的5.0换成5的话输出结果就错了,这是为什么呀,求大神指点
如果是输出0的话,应该是默认为int型了
如果除数是5的话,那么/就是整除的意思。
你也可以写成 5f,让它被视作是float
这个涉及类型转换问题,5.0/9会先将9转换成float类型在进行计算,但是5/9就会是两个整型相除结果就是0.
5/9 取整为0吧 你的输出结果是0吗?
没有头文件,include
因为(5/9)是两个int型数据,是按整型的规则来计算的,5.0是实型,就不是取整了
那是运算的优先级问题,如果换5 就是整型除整型得的结果还是整型,最后再乘整型得到的结果还是整型,那就与你定义的变量c(浮点型)相违背啦,但可以解决,那就是c=float((5/9)*(f-32));这样就是对的辣
因为C在运算的时候,它会自动判断数据类型。比如5/9=0。因为除数与被除数都是整型,所以结果默认整型。你要想得到浮点型的结果,那么除数或被除数至少需要一个是浮点型,这样得到的结果就是浮点型啦。所以要写成5.0/9, 或者5/9.0
编译器默认5/9为整形的除法,假如是5.0/9或者5/9.0的话应为有一个为float类型,所以编译器将另一个整形隐式转换成float并运算,结果也为float类型