Printf long long int in C with GCC?

c, c99, gcc, printf

Solution

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.

Problem

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); } ```

Original source

Related problems