#pragma pack(1) struct S1 { unsigned char a0: 1; unsigned char a1: 1; unsigned char a2: 1; unsigned char a3: 1; unsigned char a5: 1; unsigned short a6: 11; }; struct S2 { unsigned short a0: 1; unsigned short a1: 1; unsigned short a2: 1; unsigned short a3: 1; unsigned short a4: 1; unsigned short a6: 11; }; int main(int argc, char* argv[]) { printf("sizeof S1 %d\n", sizeof(struct S1)); printf("sizeof S2 %d\n", sizeof(struct S2)); return 0; }