原创 查看Keil MDK-ARM各种数据类型占用的字节数

2011-11-1 11:20 8117 8 8 分类: MCU/ 嵌入式

 

笔者正在学习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---Symbols Window。

 

d76955546f20d076564e00fb.jpg

三、查看各地址存放的值。View---memory Window。

 

97aeaf1c5f02aca987d6b6c4.jpg

由上图可知得出:

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位长度)


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条