对于
Keil
MDK
编译器的数据类型定义还是很模糊,主要就是区分不了
short int
、
int
、
long
和
long
int
占用多少字节。为了得到一个权威的答案,改用编译器自身得出。
一、先定义几个变量,用于存放各数据类型的字节数。
//#include
#include
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---Symbols
Window
。
三、查看各地址存放的值。
View---memory
Window
。
得出:
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
位整型变量