Упаковка битовых полей разных типов в структуре
Не могу понять, почему структура занимает 4 байта в памяти. На моём устройстве unsigned int
занимает 4 байта.
Я ожидал, что после объявления битфилдов типа unsigned int
объявление char
битфилда заставит компилятора выделить новый 32-битный блок, а после него объявление битфилда снова unsigned int
должно было выделить третий блок. Правильно ли я понимаю, что все битфилды были упакованы в один 32-битный блок памяти, несмотря на различие их типов?
#include <stdio.h>
struct struct1
{
unsigned int bitf_1 : 1;
unsigned int bitf_2 : 3;
unsigned int bitf_3 : 4;
char bitf_n : 3;
unsigned int bitf_4 : 3;
};
int main(void)
{
struct struct1 st;
printf("%ld\n", sizeof(st)); // 4
return 0;
}