关于数据类型运算的问题求解

img


这个代码可以正常的进行运算无论是5还是5.0都可以正常运算出结果
#include<stdio.h>
int main(){
float F;
float C;
printf("输入一个华氏温度\n");
scanf("%f",&F);
C=5/9*(F-32);
printf("温度为%f",C);
return 0;
}
但此代码仅当c=5.0/9(F-32)时才可正常的运算出结果,若c=5/9(F-32)则会出现

img


此结果,求详细解答,谢谢

C=5/9*(F-32); 中5/9 的结果为0,导致C为0了。类型问题引起的。可以用5/9.0

c=5.0/9(F-32) 认为5.0/9是float运算
c=5/9(F-32)中5/9认为是int运算,5/9计算完后再将值类型转换为float

类型要要有一个是float,所以写9.0保证是浮点

img


#include <stdio.h>

int main()

{
    float F, C;

    printf("请输入您需要转换的华氏温度:");

    scanf("%f", &F);

    C = (F - 32) * 5 / 9.0;

    printf("其对应的摄氏温度为:%.2f \n", C);
}

5/9是整型除法,结果是整数,小数精度没了
当执行一个计算时,不管是加法、减法还是乘除法,各变量会自动隐式转换成较大的类型进行计算
如果都是int,那么参与运算的是int,结果也是int
如果是int+double,那么所有变量会先转换成double再计算