【发布时间】:2018-04-07 19:40:22
【问题描述】:
当我编译并运行以下 sn-p 代码时,输出为 0.000000。
#include <stdio.h>
int main(void)
{
double a = 1.4;
printf("%lf", a);
return 0;
}
当我编译并运行这段 sn-p 代码时,输出为 1.400000,正如我预期的那样,它是用于第一个 sn-p 的。
#include <stdio.h>
int main(void)
{
double a = 1.4;
printf("%f", a);
return 0;
}
为什么会这样? %lf 是双精度的格式说明符,所以第一个 sn-p 不应该与第二个具有相同的输出吗?
有人问了一个类似的问题 (Correct format specifier for double in printf),但根据最重要的答案,两个 sn-ps 应该产生相同的输出,因为“如果后面跟着 f 转换说明符,则 l 被指定为无效(以及其他) "(引自第一个答案)。
我将代码块用作 IDE,并且我使 gcc 编译器遵循 1999 年的 C 标准。 可能的重复项表明我的代码应该按照我的编译器的 C99 标准工作跟随,但我的代码不起作用。因此,重复中的答案并不能解决我的问题。
【问题讨论】:
标签: c printf double format-specifiers