GCCで、
typedef struct {
unsigned long a : 1;
unsigned long b : 1;
] FOO;
typedef struct {
unsigned short a : 1;
unsigned short b : 1;
] BAR;
だと、sizeof(FOO)が4になって、sizeof(BAR)が2になるのはなぜ?

ビットフィールドのところのlongかintかshortかcharかって、どのサイズごとにまとめるかを決めるっけ?
そうではなくて、展開されたときの型じゃなかったっけ?