wlkent 发表于 2018-10-24 00:33:40

关于C中 double 和 float问题

学C中第8P 的课后作业, 我的代码如下:

#include <stdio.h>
#include <math.h>

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


好像与标答就是定义的时候用的double, 标答用的float 为什么答案会是负数啊,我改成unsigned double也不行。。。。
求助{:10_266:}{:10_266:}{:10_266:}

BngThea 发表于 2018-10-24 08:48:21

double对应的scanf中用 %lf

西瓜小刚 发表于 2018-10-24 10:12:42

float定义一个变量 占4个字节double定义一个变量 占8个字节 (16位的操作系统除外)
用scanf键入的时候
f占4个字节,lf占8个字节(注意是字母l不是数字1,有些粗心的爱犯这些小错误)
,所以float定义变量 用%f   double 定义变量 用%lf,

如果double定义的变量 用%f 的话 就会产生溢出 也就会形成负数啦。

若定义的是long double 那么就占16个字节   long double k的话用scanf 键入就用 %llf。

不知up主明白没{:10_257:}

wlkent 发表于 2018-10-24 17:58:22

西瓜小刚 发表于 2018-10-24 10:12
float定义一个变量 占4个字节double定义一个变量 占8个字节 (16位的操作系统除外)
用scanf键入的时候
...

比心小哥哥! 那这些都需要死记嘛。。还是因为现在码的代码量不够,所以没什么印象?

西瓜小刚 发表于 2018-10-24 20:23:37

wlkent 发表于 2018-10-24 17:58
比心小哥哥! 那这些都需要死记嘛。。还是因为现在码的代码量不够,所以没什么印象?

有些事,写着写着就会了{:5_109:}
页: [1]
查看完整版本: 关于C中 double 和 float问题