1. 程式人生 > >在C語言中,int ,char 等幾種資料型別所佔用的空間

在C語言中,int ,char 等幾種資料型別所佔用的空間

在32位處理器中,

int a;  sizeof(a)=4;

char a; sizeof(a)=1;

float a; sizeof(a)=4;

double a; sizeof(a)=8;

long a; sizeof(a)=4;

long int  a; sizeof(a)=4;

short a; sizeof(a)=2;

在使用者自己構造的資料型別陣列,結構體,聯合體中,

陣列:

int a[]={20,2,10};  sizeof(a)=12;

double a[]={20,2,10};  sizeof(a)=24;

結構體:

結構體變數所佔儲存空間的大小是所有成員之和,但是當考慮對齊方式時,結構體變數所佔儲存空間的大小不是所有成員之和

1、

struct a

{

    int z; //4byte

};

 sizeof(struct a)=4;

2、

struct a

{

    int z;  //4byte

    char c;  //4byte

};

 sizeof(struct a)=8;

3、

struct a

{

    char c;  //1byte

};

 sizeof(struct a)=1;


4、//這個例子便涉及到了位元組對齊問題

struct a

{

    int z;  //4byte

    char c;  //4byte

   double v;  //8byte

};

 sizeof(struct a)=16;

聯合體:

聯合體所佔儲存空間大小取決於聯合體中最大資料型別所佔的空間的大小

union A

{

   int a; //4byte

float b;  //4byte

double c; //8byte

};

sizeof(union A)=8;