程序:
#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
最佳答案
两个整数之间的除法总是导致另一个整数。如果两个术语之一是浮点数或双精度数,则另一个会自动promoted变为该类型,从而产生正确的结果。
因此typeof(5/9)= int,而typeof(5.0 / 9)= typeof(5 / 9.0)= typeof(5.0 / 9.0)= double。
因此,正确的版本是:
cel=(5./9.)*(fahr-32);
注意:每当存在具有不同“等级”类型的数学表达式时,就会发生这种情况,较低等级的类型会提升为匹配最高等级。
关于c - 我在mingw中尝试了我的第一个程序。我得到以下输出。我的程序有什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12429467/