- ベストアンサー
printf関数の書式指定について
ポインタ表示書式指定の%pと%xはどちらも16進数を表示させますがポインタを表示させる場合どちらをつかってもさほど変化はないんですか? よければ%xと%pの違いについてできるだけ詳しく教えてください あと同じく10進数表示をさせる%dと%uの違いもおしえてください
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
%pはメモリのアドレスを16進で、%xは出力するデータを16進で 出力することで、%uは負のデータを表示せず0以上を出力します。 %dは負のデータも出力します。 例えば int型で(16ビットの場合) %dはー32768~+32767まで %uは0~65535まで出力します。
その他の回答 (2)
- toysmith
- ベストアンサー率37% (570/1525)
回答No.3
失礼しました! × %xはアドレス形式表示です。 ○ %pはアドレス形式表示です。
- toysmith
- ベストアンサー率37% (570/1525)
回答No.2
%xは16進数表示です。 %xはアドレス形式表示です。 アドレスの表示形式は処理系依存なので「こう違う」とは言えません。 アドレス値の表示形式はCPUアーキテクチャに大きく依存します。 printf("%p", (void *)0x00)を例にとると、 8086farアドレス)0000:0000 8086nearアドレス)0000 pentium)00000000 これがprintf("%x",0x00)だと全ての処理系で0と表示されます。