[Solved] I want to know about print type explicitly [closed]


You must a format specifier that matches the type of the value you are printing.

%p expects a void *.

%x expects an unsigned int.

%lx expects an unsigned long.

This is documented in man 3 printf.

#include <inttypes.h>
#include <stdint.h>
#include <stdio.h>

int main(void) {
   const char *s = "foo";
   printf("%p\n", s);
   printf("%s\n", PRIxPTR);
   printf("%#" PRIxPTR "\n", (uintptr_t)s);
}

Output:

$ gcc -Wall -Wextra -pedantic -std=c99 a.c -o a && a
0x5b72da1774
lx
0x5b72da1774

PRIxPTR will be something like x. In my case, it’s lx because a pointer is the same size as an unsigned long.

2

solved I want to know about print type explicitly [closed]