C语言中sizeof 用法跟疑惑
利用字节对齐原理解释不通,能有人给解释一下么
VS2005 32bitcpu
#include "stdio.h"
#include "stdlib.h"
#pragma pack(4)
struct LALA
{
short st2;
char c1;
short st3;
char c4;
short st;
char c2;
char c3;
long ll;
};
//============================下面的疑惑========================
struct LALA2
{
char c1;
short s1;
char c2;
long l1;
};
struct tagA
{
char a;
short b;
char d;
};
typedef struct example
{
unsigned short usA;
unsigned long ulA;
unsigned short usB;
unsigned char ucA;
unsigned short usC;
}example_s;
typedef struct example2
{
unsigned long ulA;
unsigned short usA;
unsigned short usB;
unsigned short usC;
unsigned char ucA;
unsigned char ucReserved;
}example_s2;
void main()
{
LALA lala;
printf("sizeof(lala):%d\n",sizeof(lala));(16)
LALA2 lala2;
printf("sizeof(lala2):%d\n",sizeof(lala2));(12) //利用字节对齐原理解释不通,能有人给解释一下么
struct tagA sta,stb[2];
printf("sizeof(stb):%d\n",sizeof(stb));(12)
getchar();
}