Я работаю с structs в c на linux. Я начал использовать битовые поля и "упакованный" атрибут, и я наткнулся на странное поведение:
struct t1
{
int a:12;
int b:32;
int c:4;
}__attribute__((packed));
struct t2
{
int a:12;
int b;
int c:4;
}__attribute__((packed));
void main()
{
printf("%d\n",sizeof(t1)); //output - 6
printf("%d\n",sizeof(t2)); //output - 7
}
Почему обе структуры, которые являются точно такими же, принимают различное количество байтов?