Printf long long int in C with GCC?

时间:2012-11-27 18:31:40

标签: c gcc printf c99

如何使用GCC在C99中printf long long intunsigned long long int

我搜索了其他建议使用%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 个答案:

答案 0 :(得分:58)

如果你在windows上并使用mingw,gcc使用win32运行时,其中printf需要%I64d表示64位整数。 (和%I64u表示未经编码的64位整数)

对于大多数其他平台,您使用%lld打印很长时间。 (和%llu如果它是未签名的)。这在C99中是标准化的。

gcc没有完整的C运行时,它会延伸到它运行的平台 - 所以一般情况下你需要查阅你的特定平台的文档 - 独立于gcc。

答案 1 :(得分:3)

尝试更新你的编译器,我在Windows 7 Starter x86和MinGW上使用GCC 4.7,它在C99和C11中使用相同的选项进行编译。

答案 2 :(得分:1)

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

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

int64_t n = 7;
printf("n is %" PRId64 "\n", n);

答案 3 :(得分:0)

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

enter image description here