我在mingw尝试了我的第一个程序。我得到了以下输出。我的计划有什么问题?

时间:2012-09-14 17:45:22

标签: c mingw32

程序:

#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

3 个答案:

答案 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。