ない場合、私は疑問に思う:`NULL`ポインタを持つ変換指定子` p`の動作は何ですか?
void *ptr = NULL;
printf("%p\n", ptr);
は常に(nil)
出力を与えるのだろうか?
標準ライブラリの実装に依存するのか、それともC99標準仕様ですか?
ない場合、私は疑問に思う:`NULL`ポインタを持つ変換指定子` p`の動作は何ですか?
void *ptr = NULL;
printf("%p\n", ptr);
は常に(nil)
出力を与えるのだろうか?
標準ライブラリの実装に依存するのか、それともC99標準仕様ですか?
私のシステムでは、(null)
が生成されるので、実装が定義していると思います。引数はvoidへのポインタでなければなら
7.21.6.1
:より一般的には、すべて
%p
プリントは実装定義です。ポインタの値は であり、実装定義の方法で の一連の印刷文字に変換されます。
いつも(nil)を与えますか?
全くありません。私のマシン(i686-apple-darwin11-llvm-gcc-4.2
のMac)には、0x0
が印刷されます。
標準では、 '%p'形式のprintfの出力が何であるかを定義していないと思います。それは実装次第です。 –
答えが間違っているので、私はこの質問を再作成します。これは〜5000回の閲覧に関する問題です。 – Stargateur
@Stargateur:ネクロマンサーバッジへ行く途中で? – chqrlie