What is the behavior of the conversion specifier `

2019-02-21 09:40发布

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?

标签: c null printf
2条回答
Lonely孤独者°
2楼-- · 2019-02-21 10:41

Will always gives (nil)?

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

查看更多
在下西门庆
3楼-- · 2019-02-21 10:43

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.

查看更多
登录 后发表回答