Каково поведение спецификатора преобразования `p` с указателем` NULL`?

Интересно, если делает:

<code>void *ptr = NULL;
printf("%p\n", ptr);
</code>

Всегда даст(nil) выход?

Зависит ли оно от реализации стандартной библиотеки или это стандартная спецификация C99?

 Basile Starynkevitch05 мая 2012 г., 13:25
Я думаю, что стандарт не определяет, что вывод printf для%p формат. Это до реализации.
 chqrlie09 июл. 2017 г., 12:26
@Stargateur: на пути к значку некроманта?
 Stargateur09 июл. 2017 г., 12:04
Я переделываю этот вопрос, потому что ответы неверны. Это проблема для вопроса ~ 5000 просмотров.
 Stargateur09 июл. 2017 г., 12:44
@chqrlie Нет, просто пользователь изC chat кто утверждает, что это неопределенное поведение, но он не хочет отвечать на старый вопрос с неправильным ответом с высокой оценкой ... поэтому он хочет создать новый. Поэтому я просто пытаюсь улучшить вопрос, чтобы убедить его ответить здесь: с.

Ответы на вопрос(2)

Не за что. На моей машине (Mac сi686-apple-darwin11-llvm-gcc-4.2) это печатает0x0.

Решение Вопроса

(null) так что я предполагаю, что его реализация определена. В общем, все%p prints определяется реализацией:

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.

Ваш ответ на вопрос