【发布时间】:2013-03-14 22:09:30
【问题描述】:
我是一个初学者编程的学生,只是想了解这背后的原因。
当我使用这段代码时:
#include <stdio.h>
int main()
{
double pi = 3.1415926535897932;
printf("%lf",pi);
return 0;
}
编译器给出这个警告。 ISO C90 不支持 ‘%lf’ gnu_printf 格式 [-Wformat]
我在 ubuntu 终端中使用 gcc 编译器和 (-o -Wall -ansi -pedantic-errors)
这背后的原因是什么?我搜索了网页,发现在 C99 中允许使用这种用法。为什么 C90 不允许在 printf 中使用 %lf?我可以使用 %.16lf 或 %.16f 并以相同的精度打印,那么是什么原因导致 %lf 在 C90 中不好?
【问题讨论】:
-
因为后来才标准化?
-
%lf对printf家族没有用处,只对scanf家族有用。 -
你可能只是混淆了一些东西,
double打印的是%f而不是%lf。
标签: c