我在Windows 64位平台上使用Code :: Blocks 12.11来实现C / C ++代码。我最近遇到了一个意想不到的结果。
#include <stdio.h>
int main()
{
long double number;
number = 1.1234567;
printf("%llf\n",number);
return 0;
}
它应该打印输出1.1234567但它给出-0.000000,我发现当我使用long double时它总是给出错误的值。此代码适用于ideone http://ideone.com/Opu8cy,请告诉我是否有办法解决此问题。
答案 0 :(得分:0)
您应该使用%Lf
格式,而不是%llf
。
还可能存在
的错误number = 1.1234567L;
可以提供帮助。
ll (ell-ell). A following integer conversion corresponds to a
long long int or unsigned long long int argument, or a
following n conversion corresponds to a pointer to a long long
int argument.
L A following a, A, e, E, f, F, g, or G conversion corresponds
to a long double argument. (C99 allows %LF, but SUSv2 does
not.)
此外,在Code :: Blocks中,您应该转到设置 - &gt;编译器和调试器...... 并调整警告级别。 (最好是高水平。)
您可能没有使用GCC( mingw 等) - 但如果使用-Wall -Wextra -pedantic
+某些-std=xxx
或查看this one之类的答案 - 但对于你的编译器。