2 sinat 34553237 sinat_34553237 于 2016.04.05 23:50 提问

C语言小白问,求各位大神点拨

#include
#include
int main(){
float f,c;
printf("请输入华氏温度f=");

scanf("%f",&f);
c=5/9*(f-32);
printf ("相应的摄氏温度c=%f度\n",c);

getch();

}
为什么算不出来呢。。。

6个回答

ReturnForever
ReturnForever   2016.04.05 23:53
已采纳

c=5/9*(f-32);有问题
5/9结果为0
改为 :
c = 5.0/9 *(f-32);

caozhy
caozhy   Ds   Rxr 2016.04.05 23:56
 c=5/(double)9*(f-32);
u011225629
u011225629   2016.04.06 08:44

5/9
都是int类型相除还是int

f为float类型

int与float类型在一起怎么运算呢?

nw852884172
nw852884172   2016.04.06 09:22

问题在与赋值这一行。
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等。

beifengche
beifengche   2016.04.06 22:06

旒氓兎0o 和ReturnForever 说的就是问题所在

sinat_34553237
sinat_34553237   2016.04.06 23:03

谢谢各位大神!!!。。。额。。。那我就采纳最先回答的了。。。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!