68

如何使用 GCC printflong long int以及unsigned long long int在 C99 中?

我已经搜索了其他建议使用的帖子,%lld但它给出了这些警告:

警告#1:格式为 [-Wformat]| 的未知转换类型字符“l”|
警告#2:格式参数过多 [-Wformat-extra-args]|

对于以下尝试:

#include <stdio.h>

int main()
{
   long long int x = 0;
   unsigned long long int y = 0;
   printf("%lld\n", x);
   printf("%llu\n", y);
}
4

4 回答 4

90

如果您在 Windows 上使用 mingw,gcc 使用 win32 运行时,其中 printf 需要%I64d64 位整数。(并且%I64u对于一个无符号的 64 位整数)

对于大多数其他%lld用于打印 long long 的平台。(%llu如果它没有签名)。这是在 C99 中标准化的。

gcc 没有提供完整的 C 运行时,它依赖于它运行的平台 - 所以一般情况是您需要查阅特定平台的文档 - 独立于 gcc。

于 2012-11-27T18:36:34.803 回答
6

对于可移植代码,可以使用inttypes.h中的宏。它们扩展到平台的正确的。

例如对于 64 位整数,PRId64可以使用宏。

int64_t n = 7;
printf("n is %" PRId64 "\n", n);
于 2020-04-09T18:40:45.580 回答
3

尝试更新您的编译器,我在带有 MinGW 的 Windows 7 Starter x86 上使用 GCC 4.7,它在 C99 和 C11 中使用相同的选项编译得很好。

于 2012-11-27T20:55:04.843 回答
-2

您可以尝试设置code::block,有一个编译器...,然后您在C模式下选择。

在此处输入图像描述

于 2019-07-28T11:39:53.673 回答