Champs de bits emballés dans les structures c - GCC

Je suis en train de travailler avec les structures en c sous linux.
J'ai commencé à l'aide de champs de bits et les "paniers" de l'attribut et je suis tombé sur un comportement bizarre:

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
}

Comment les deux structures que sont exactement les mêmes - prendre diffrent nombre d'octets?

source d'informationauteur Shahar Sh