哈哈0529 发表于 2020-9-7 13:33:02

新手学习C语言

想知道s1e8中的问题这样的代码有什么问题?
为什么结果会不一样?

#include <stdio.h>

int main()
{
       int F;
       float C;
          
          printf("请输入华氏度:");
          scanf("%d",&F);
          
          C = (F-32)*5/9;
          
          printf("转换为摄氏度是:%.2f\n",C);
          
          return 0;
}

1q23w31 发表于 2020-9-7 17:49:42

与哪段代码结果不一样?

baige 发表于 2020-9-7 18:06:20

#include <stdio.h>

int main()
{
         int F;
         float C;
         
          printf("请输入华氏度:");
          scanf("%d",&F);
         
          C = (F-32.0)*5/9;
         
          printf("转换为摄氏度是:%.2f\n",C);
         
          return 0;
}

baige 发表于 2020-9-7 18:06:56

都是整数在运算会截断小数

风过无痕1989 发表于 2020-9-8 00:17:57

warning C4244: '=' : conversion from 'int ' to 'float ', possible loss of data 意思是 int 型转换成 float 型会造成数据丢失

将华氏温度与摄氏温度均改为 double 型或者 float 型 (),就能正常输出

// double 型程序
#include <stdio.h>

int main()
{
         double F;
         double C;
         
          printf("请输入华氏度:");
          scanf("%lf",&F);                                 // double 型的控制符 lf
         
          C = (F-32)*5/9;
         
          printf("转换为摄氏度是:%.2f\n",C);
         
          return 0;
}


// float 型程序
#include <stdio.h>

int main()
{
         float F;
         float C;
         
          printf("请输入华氏度:");
          scanf("%lf",&F);                                 // float 型的控制符 f
         
          C = (F-32)*5/9;
         
          printf("转换为摄氏度是:%.2f\n",C);
         
          return 0;
}

// 当然 3 楼的做法,也能正常输出

三点一洲 发表于 2020-9-10 15:53:30

C语言中,/代表整除,如果是整型的话会舍去小数部分,这个时候只要在整数后面加上.0,使其成为一个实数就行了
页: [1]
查看完整版本: 新手学习C语言