<16進数表記>
アドレスを表記する時には、通常16進数表記を用います。16進数表記であることを明らかにするために、先頭に"0x"をつけるのが普通です。
#include
<stdio.h>
int
main(void) {
int
i;
printf("address
of i = %p\n", &i);
printf("address
in HEX = %x\n", &i);
printf("address
in HEX = %#x\n", &i);
printf("address
in DEC = %d\n", &i);
printf("address
in unsigned DEC = %u\n", &i);
return
0;
}
(実行例)
address
of i = 0xbffffaa0
address
in HEX = bffffaa0
address
in HEX = 0xbffffaa0
address
in DEC = -1073743200
address
in unsigned DEC = 3221224096
printfの%pという型変換文字はアドレスを表示するためのもので、0xつきの16進数として表示します。%xを使っても、同じアドレスを16進数指定で表示することができますが、"0x"をつけるためには"#"オプションを使う必要があります。
%dをつかうと10進数になりますが、正しいアドレスの値は符号なし10進数の変換文字である%uを使わないと表示されません。
アドレスを表示する場合以外にも、変数の値のビット構造をはっきりさせたい場合などには16進数表記をよく用います。