新手学习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;
} 与哪段代码结果不一样? #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;
}
都是整数在运算会截断小数 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 楼的做法,也能正常输出
C语言中,/代表整除,如果是整型的话会舍去小数部分,这个时候只要在整数后面加上.0,使其成为一个实数就行了
页:
[1]