今天我尝试使用double
说明符使用printf
函数打印%lf
值,但我得到0.000000
。但是当我尝试用%f
说明符打印相同的东西时,我得到了正确的输出。为什么会这样?我使用 c ++ 0x (我认为 c ++ 11 。)
#include<stdio.h>
int main()
{
double aaa;
aaa=1.23;
printf("%lf\n",aaa);
printf("%f\n",aaa);
return 0;
}
答案 0 :(得分:2)
也许这个答案并不完全正确,但根据this reference,%l
看起来是long int
的长度说明符,%f
是说明符为float
。也许在过去这可以打印浮点变量,但我猜你的代码试图将双变量aaa
视为long int
,并将结果打印为0。
答案 1 :(得分:1)
来自C99:
转换说明符及其含义为:
f,F - 表示浮点数的双参数
长度修饰符及其含义为:
l(ell) - ...对后续a,A,e,E,f,F,g或G转换没有影响 说明符。
因此两个电话的效果必须相同。 (编译器错误?旧编译器?)