How do I printf long long int
and also unsigned long long int
in C99 using GCC?
I have searched the other posts which suggest to use %lld
but it gives these warnings:
warning#1: unknown conversion type character 'l' in format [-Wformat]|
warning#2: too many arguments for format [-Wformat-extra-args]|
For the following attempt:
#include <stdio.h>
int main()
{
long long int x = 0;
unsigned long long int y = 0;
printf("%lld\n", x);
printf("%llu\n", y);
}
Try to update your compiler, I'm using GCC 4.7 on Windows 7 Starter x86 with MinGW and it compiles fine with the same options both in C99 and C11.
If you are on windows and using mingw, gcc uses the win32 runtime, where printf needs
%I64d
for a 64 bit integer. (and%I64u
for an unsinged 64 bit integer)For most other platforms you'd use
%lld
for printing a long long. (and%llu
if it's unsigned). This is standarized in C99.gcc doesn't come with a full C runtime, it defers to the platform it's running on - so the general case is that you need to consult the documentation for your particular platform - independent of gcc.