有時候大家會想去 print 一個 pointer 裡面的值, 這個在 assembly code 中相當直覺, 在 C code 中需要一點點的技巧. 比方說 printf 預設的參數型別是 long, 那麼 int pointer 就需要轉一下, 才能夠保證印出心中所想的值.
int *ptr;
int data[100];
ptr = data;
for (i = 0; i < 100; i++)
{
printf("index %d = %x\n", i, *((long*)ptr));
就比
printf("index %d = %x\n", i, *ptr);
來得保險.
ptr++;
}
能說明這其中微小的差異(long/int)為何嗎?
跟平台有關嗎? 在32-bits的PC上有差異嗎?
另外, 我手邊的書寫著"x: the corresponding argument is printed as an unsigned hexadecimal integer"…