天天看點

Keil MDK編譯器的資料類型定義

出處:http://blog.sina.com.cn/s/blog_62d3426b0100fr7q.html

對于Keil MDK編譯器的資料類型定義還是很模糊,主要就是區分不了short int、int、long 和long int占用多少位元組。為了得到一個權威的答案,改用編譯器自身得出。

一、先定義幾個變量,用于存放各資料類型的位元組數。

//#include<LPC214x.H>

#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。

 三、檢視各位址存放的值。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位整型變量

       typedef float            fp32;       // 單精度浮點數(32位長度)

       typedef double           fp64;       // 雙精度浮點數(64位長度)

繼續閱讀