プロが教えるわが家の防犯対策術!

アドレスを表示させるときの、%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;
}

A 回答 (2件)

およそ #1 の通りで, アドレス値を出力するためには %p を使わなければなりません. %x は unsigned int を

16進で出力するという指定であり, アドレス値を出力するときに %x を使ってはいけません. 処理系によっては動いてしまうこともありますが正しいプログラムではありません.
    • good
    • 6
この回答へのお礼

お返事ありがとうございました。
%pが正しいようですね。
これからは%pを。
ありがとうございました。

お礼日時:2004/12/16 22:41

型が違うのだと思います。



%xはint、%pはvoid*だと思います。
そのため質問文のコードではコンパイラによっては型不一致のワーニングがでるかもしれません。

printf("bのアドレスは%d,%p,%x\n", (int)&b, (void*)&b, (int)&b);
のようになるのではないでしょうか?
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!