查看Keil ARM各種數據類型占用的字節數 筆者正在學習uCOS-II,移植到ARM時考慮到數據類型的定義,但對于Keil MDK編譯器的數據類型定義還是很模糊,主要就是區分不了short int、int、long 和long int占用多少字節。為了得到一個權威的答案,改用編譯器自身得出。
一、先定義幾個變量,用于存放各數據類型的字節數。
#include<stdio.h>
unsigned char a,b,c,d,e,f,g;
main()
{
a=sizeof(char);
b=sizeof(short int);
c=sizeof(int);
d=sizeof(long);
e=sizeof(long int);
f=sizeof(float);
g=sizeof(double);
while(1);
}
二、查看各變量的存放地址。View---Watch1。

由上圖可知得出:
char占用1個字節
short int占用2字節
int占用4字節
long占用4字節
long int占用4字節
float占用4字節
double占用8字節
我們即可這樣定義宏:
typedef unsigned char uint8; // 無符號8位整型變量
typedef signed char int8; // 有符號8位整型變量
typedef unsigned short uint16; // 無符號16位整型變量
typedef signed short int16; // 有符號16位整型變量
typedef unsigned int uint32; // 無符號32位整型變量
typedef signed int int32; // 有符號32位整型變量
typedef float fp32; // 單精度浮點數(32位長度)
typedef double fp64; // 雙精度浮點數(64位長度)
|