CodeSky 代码之空

随手记录自己的学习过程

C 输入输出double值得处理

2014-04-04 23:02分类: C评论: 0

今天又做到一道题,在scanf()printf()时对double的处理再度纠结。

1    double a, b;
2
3    printf("Please input two numbers(use space to divide): ");
4    scanf("%lf%lf", &a, &b);
5    printf("1/(1/a+1/b)/2= %f\n", harmmean(a, b));
6    return 0;
7

很明显的纠结于

1    scanf("%lf%lf", &a, &b);
2

scanf()时我们用了%lf,而printf()时我们却用了%f,对此做出的解释是: 首先,一般情况下floatdouble所占的位数是不一样的……至少在我的电脑上intfloat是4位,而double是8位。所以为了区分,在输入时需要明确的分为%f%lf来确定你是要使用4位内存还是8位,而在printf()时,float会被转换为double,因此不用区分,直接使用%f就行了,至于%lf似乎就不存在了,存在的是%Lf,用于输入输出Long Double,可见C 总结一下 类型与格式说明符对应表

评论 (0)