Упаковка битовых полей разных типов в структуре

Не могу понять, почему структура занимает 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;
}

Ответы (0 шт):