C 输入输出double值得处理
今天又做到一道题,在scanf()
和printf()
时对double
的处理再度纠结。
double a, b;
printf("Please input two numbers(use space to divide): ");
scanf("%lf%lf", &a, &b);
printf("1/(1/a+1/b)/2= %f\n", harmmean(a, b));
return 0;
很明显的纠结于
scanf("%lf%lf", &a, &b);
scanf()
时我们用了%lf
,而printf()
时我们却用了%f
,对此做出的解释是:
首先,一般情况下float
和double
所占的位数是不一样的……至少在我的电脑上int
和float
是4位,而double
是8位。所以为了区分,在输入时需要明确的分为%f
和%lf
来确定你是要使用4位内存还是8位,而在printf()
时,float
会被转换为double
,因此不用区分,直接使用%f
就行了,至于%lf
似乎就不存在了,存在的是%Lf
,用于输入输出Long Double,可见C 总结一下 类型与格式说明符对应表
植入部分
如果您觉得文章不错,可以通过赞助支持我。
如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。