What is the behavior of the conversion specifier `

2019-02-21 09:38发布

问题:

I wonder if does:

void *ptr = NULL;
printf("%p\n", ptr);

Will always gives (nil) output?

Does it depend on standard library implementation, or it's a C99 standard specification?

回答1:

On my system it yields (null) so I guess it's implementation defined. More generally, everything %p prints is implementation-defined:

7.21.6.1

The argument shall be a pointer to void. The value of the pointer is converted to a sequence of printing characters, in an implementation-defined manner.



回答2:

Will always gives (nil)?

Not at all. On my machine (Mac with i686-apple-darwin11-llvm-gcc-4.2) it prints 0x0.



标签: c null printf