- ベストアンサー
%P と %X の違い
アドレスを表示させるときの、%p は、%x と同じ16進数で表示される んでしょうか? 表示の違いと言えば、大文字か小文字の違いだけなんでしょうか? 16進数の大大文字は「%X」というふうに、Xを大文字で指定すれば、 結果も大文字で表示されますよね。 %pはどういった意味なんでしょうか? #include <stdio.h> main() { char a; short b; printf("bのアドレスは%d,%p,%x\n", &b, &b, &b); return 0; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
およそ #1 の通りで, アドレス値を出力するためには %p を使わなければなりません. %x は unsigned int を 16進で出力するという指定であり, アドレス値を出力するときに %x を使ってはいけません. 処理系によっては動いてしまうこともありますが正しいプログラムではありません.
その他の回答 (1)
- nitscape
- ベストアンサー率30% (275/909)
回答No.1
型が違うのだと思います。 %xはint、%pはvoid*だと思います。 そのため質問文のコードではコンパイラによっては型不一致のワーニングがでるかもしれません。 printf("bのアドレスは%d,%p,%x\n", (int)&b, (void*)&b, (int)&b); のようになるのではないでしょうか?
お礼
お返事ありがとうございました。 %pが正しいようですね。 これからは%pを。 ありがとうございました。