程序:
#include<stdio.h>
main()
{
int fahr;
float cel;
for(fahr=0;fahr<300;fahr=fahr+20)
{
cel=(5/9)*(fahr-32);
printf("\n %d \t %f",fahr,cel);
}
}
我得到的输出:
0 0.000000
20 0.000000
40 0.000000
60 0.000000
80 0.000000
100 0.000000
120 0.000000
140 0.000000
160 0.000000
180 0.000000
200 0.000000
220 0.000000
240 0.000000
260 0.000000
280 0.000000
答案 0 :(得分:2)
5/9整数为零,尝试cel=(fahr-32)*5/9
或漂浮整艘船。
答案 1 :(得分:2)
两个整数之间的划分总是导致另一个整数。如果两个术语中的一个是float或double,则另一个术语自动promoted到该类型,从而得出正确的结果。
因此typeof(5/9)= int而typeof(5.0 / 9)= typeof(5 / 9.0)= typeof(5.0 / 9.0)= double。
因此正确的版本是:
cel=(5./9.)*(fahr-32);
注意:每当有一个具有不同“等级”类型的数学表达式时,就会发生这种情况,较低等级的类型被提升为匹配最高等级。
答案 2 :(得分:0)
尝试一下:
main()
{
int fahr;
float cel;
for(fahr=0;fahr<300;fahr=fahr+20)
{
cel=(5./9.)*(fahr-32);
printf("\n %d \t %f",fahr,cel);
}
}
5/9是(作为一个类型)int / int,它将给出一个int。您可以通过将数学转换为5.0 / 9.0来转换数学,或者只需5./9。