首先问大家两个问题:
Keil C51、8位单片机
//char a;
void main(void)
{
while(1)
{
}
}
定义变量:
char a;
编译结果:
Program Size: data=10.0 xdata=0 code=17
定义变量:
short a;
编译结果:
Program Size: data=11.0 xdata=0 code=17
定义变量:
int a;
编译结果:
Program Size: data=11.0 xdata=0 code=17
定义变量:
float a
编译结果:
Program Size: data=13.0 xdata=0 code=17
定义变量:
double
编译结果:
Program Size: data=13.0 xdata=0 code=17
Keil MDK、32位单片机
//char a;
int main(void)
{
while(1)
{
// a++;
}
}
定义变量:
char a;
编译结果:
Program Size: Code=512 RO-data=436 RW-data=4 ZI-data=1028
注意4字节为一个“单元”,超过这个单元就分配到“下一个单元”,比如:
char a;
int b;
char c;
这里就会占用12(3 * 4)字节空间(a、b、c各自占4字节)。
定义变量:
short a;
编译结果:
Program Size: Code=512 RO-data=436 RW-data=4 ZI-data=1028
定义变量:
int a;
编译结果:
Program Size: Code=512 RO-data=436 RW-data=4 ZI-data=1028
定义变量:
float a;
编译结果:
Program Size: Code=520 RO-data=436 RW-data=4 ZI-data=1028
定义变量:
double a;
编译结果:
Program Size: Code=1156 RO-data=436 RW-data=8 ZI-data=1024
总结
char:占1字节
short、int:占2字节
float、double:占4字节
char:占1字节
short:占2字节
int、float:占4字节
double:占8字节
struct Str
{
char a;
short b;
int c;
char d;
};
End