1. 程式人生 > >[Keil-C51]在Keil C51中使用sizeof()的一點問題記錄

[Keil-C51]在Keil C51中使用sizeof()的一點問題記錄

   問題描述:利用51核的微控制器程式設計時,有時需要確切知道某個數值的位元組數大小(如AD採集時採集到的AD值會存放在n位的數值),除了查詢KeilC51的手冊進行驗證,另一種就是直接用sizeof()檢視。    sizeof():關於sizeof()的介紹網上有很多詳細的資料,這是一個操作符,所以使用時不必新增標頭檔案。可以對數值和型別進行操作,返回的值是size_t型別。size_t型別在C51編譯器的stddef.h中如是定義: #ifndef _SIZE_T  #define _SIZE_T  typedef unsigned int size_t; #endif    一點問題:
首先使用sizeof()得到型別的位元組長度,然後用printf通過串列埠將資料列印在我電腦上。     使用     printf("\n %d %d%d",sizeof(int),sizeof(short),sizeof(char));//列印結果為 514 256 0    sizeof()返回的是size_t型別,這個就是unsigned int了,用%d格式化列印本應當是沒問題的。     於是,修改後:   unsigned intj1,j2,j3;   j1 = sizeof(int);   j2 = sizeof(short);   j3 = sizeof(char);   printf("\n %d %d %d",j1,j2,j3);//此時列印結果為 22 1    這裡修改後,首先將sizeof(int),sizeof(short),sizeof(char)隱式轉換成型別unsignedint了,然後再用%d格式化列印就可以。這個問題不知道是何原因。