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

ポインタ表示書式指定の%pと%xはどちらも16進数を表示させますがポインタを表示させる場合どちらをつかってもさほど変化はないんですか?
よければ%xと%pの違いについてできるだけ詳しく教えてください
あと同じく10進数表示をさせる%dと%uの違いもおしえてください

A 回答 (3件)

%pはメモリのアドレスを16進で、%xは出力するデータを16進で


出力することで、%uは負のデータを表示せず0以上を出力します。
%dは負のデータも出力します。
例えば int型で(16ビットの場合)
%dはー32768~+32767まで
%uは0~65535まで出力します。
    • good
    • 0

失礼しました!



× %xはアドレス形式表示です。
○ %pはアドレス形式表示です。
    • good
    • 0

%xは16進数表示です。


%xはアドレス形式表示です。

アドレスの表示形式は処理系依存なので「こう違う」とは言えません。

アドレス値の表示形式はCPUアーキテクチャに大きく依存します。
printf("%p", (void *)0x00)を例にとると、
8086farアドレス)0000:0000
8086nearアドレス)0000
pentium)00000000
これがprintf("%x",0x00)だと全ての処理系で0と表示されます。
    • good
    • 0

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