C语言小白问,求各位大神点拨
问题描述:
#include
#include
int main(){
float f,c;
printf("请输入华氏温度f=");
scanf("%f",&f);
c=5/9*(f-32);
printf ("相应的摄氏温度c=%f度\n",c);
getch();
}
为什么算不出来呢。。。
答
c=5/9*(f-32);有问题
5/9结果为0
改为 :
c = 5.0/9 *(f-32);
答
c=5/(double)9*(f-32);
答
5/9
都是int类型相除还是int
f为float类型
int与float类型在一起怎么运算呢?
答
问题在与赋值这一行。
c=5/9*(f-32);
表达式计算,你可以搜一下C语言的表达式计算。 你这行表达式计算包含乘除法,计算顺序从左往右。 括号内单独算。 (f-32) , C语言包含隐式转换
(f-32)被隐式转换成float类型。 但是5/9 默认两个int类型值进行计算,结果还是整形。该地方不够除,所以就是0,0*任意float值,还是0.
你只需要像楼上回答那样就好了,不过还是要尽量避免隐式转换类型。 容易造成内存泄漏,数据遗失等问题。 你可以看下C++中的类型强制转换,比如reinterpret_cast,const_cast,static_cast等。
答
旒氓兎0o 和ReturnForever 说的就是问题所在
答
谢谢各位大神!!!。。。额。。。那我就采纳最先回答的了。。。