rozmiar struktury zawierającej pola bitów [duplikat]
Możliwy duplikat:
Dlaczego sizeof dla struktury nie jest równy sumie wielkości każdego członka?
Próbowałem zrozumieć pojęcie pól bitowych. Ale nie jestem w stanie stwierdzić, dlaczego rozmiar następującej struktury w CASE III wychodzi jako 8 bajtów.
PRZYPADEK I:struct B
{
unsigned char c; // +8 bits
} b;
sizeof (b); // Wyjście: 1 (ponieważ unsigned char zajmuje 1 bajt w moim systemie)
PRZYPADEK II:struct B
{
unsigned b: 1;
} b;
sizeof(b); // Output: 4 (because unsigned takes 4 bytes on my system)
PRZYPADEK III:struct B
{
unsigned char c; // +8 bits
unsigned b: 1; // +1 bit
} b;
sizeof(b); // Output: 8
Nie rozumiem, dlaczego wyjście dla przypadku III ma wartość 8. Spodziewałem się 1 (znak) + 4 (znak bez znaku) = 5.