使用long double时,Code :: Blocks会产生错误的结果

时间:2013-11-03 00:03:23

标签: c ide double codeblocks

我在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,请告诉我是否有办法解决此问题。

1 个答案:

答案 0 :(得分:0)

您应该使用%Lf格式,而不是%llf

还可能存在

的错误
number = 1.1234567L;

可以提供帮助。

PRINTF(3)

   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之类的答案 - 但对于你的编译器。