Jestem ciekawy, dlaczego pola bitowe z tym samym typem danych zajmują mniejszy rozmiar niż w przypadku mieszanych typów danych .dlaczego pola bitowe dla tych samych typów danych mają mniejszy rozmiar w porównaniu do pól bitowych dla typów danych mieszanki
struct xyz
{
int x : 1;
int y : 1;
int z : 1;
};
struct abc
{
char x : 1;
int y : 1;
bool z : 1;
};
sizeof (xyz) = 4 sizeof (abc) = 12.
używam VS 2005, maszyna 64-bit x86.
Odpowiedź bitowa na poziomie kompilatora/kompilatora byłaby świetna.
Należy zauważyć, że pola bitowe nie mają jednak wymagań dotyczących wyrównania. –
Nie, ale kompilator nie ma obowiązku ich pakowania. – greyfade
Patrz ISO14882: 2003, §9.6, akapit 1. – greyfade