<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進数表記をよく用います。

 

 

戻る