输入输出
double d;
scanf("%f", &d);
printf("%f", d);
结果:输入输出
输入:10.3
输出:0.00000
为什么呢?我认为输出应该是10.3 visual studio 2008.
对于scanf()
,%f
是为float
。对于double
,您需要%lf
。所以,
#include <stdio.h>
main() {
double d;
scanf("%lf", &d);
printf("%f\n", d);
}
与输入10.3
产生10.300000
。
对于%4.1lf格式的字符串+1字符串Sergey可以查看此内容:http://www.cplusplus.com/reference/clibrary/cstdio/printf/ – stacker 2010-03-07 10:13:06
'scanf()'需要'%lf',但对于'printf ()','%f'意味着'double'(并且也使用'float',因为'float'在参数列表的变量部分被提升为'double')。 '%lf'对'printf()'没有意义。 – caf 2010-03-07 10:20:46
printf是一个可变参数函数,所以参数提升不需要应用 - 编译器不知道格式字符串之外的参数类型。说,%lf是需要的。 – 2010-03-07 14:18:27
尝试用%lf
代替%f
。在处理float
而不是double
时使用%f
。 (或者,您可以制作d
a float
)。
现在你的问题已解决,http://*.com/questions/2377733/how-does-this-program-work可能会澄清一些事情! – Lazer 2010-03-07 19:12:42