C code 容易忽略的小地方

有時候大家會想去 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++;

}

C code 容易忽略的小地方 有 “ 2 則迴響 ”

  1. 能說明這其中微小的差異(long/int)為何嗎?
    跟平台有關嗎? 在32-bits的PC上有差異嗎?
    另外, 我手邊的書寫著"x: the corresponding argument is printed as an unsigned hexadecimal integer"…

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

%d 位部落客按了讚: