With the following code I am trying to output the value of a unit64_t
variable using printf()
. Compiling the code with gcc, returns the following warning:
warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 2 has type ‘uint64_t’ [-Wformat=]
The code:
#include <stdio.h>
#include <stdint.h>
int main ()
{
uint64_t val = 0x1234567890abcdef;
printf("val = 0x%x\n", val);
return 0;
}
The output:
val = 0x90abcdef
Expected output:
val = 0x1234567890abcdef
How can I output a 64bit value as a hexadecimal integer using printf()
? The x
specifier seems to be wrong in this case.