#include <stdint.h>
#include <stdio.h>
typedef union {
uint64_t u[2];
struct {
uint64_t a:30;
uint64_t b:30;
uint64_t c:30;
uint64_t d:30;
uint64_t e:8;
}x;
} mystruct;
int main()
{
printf("Size %d\n", sizeof(mystruct));
}
Próbuję skompilować go na maszynie 64-bitowej. Oczekiwana moc wyjściowa wynosiła 16, ale otrzymuję 24. Wiem, że pewne wyrównanie stało się tutaj, ale nie jestem pewien, dlaczego jako struktura x ma dokładnie 16 bajtów. Czy ktoś może to wyjaśnić. Dziękisizeof nie pokazuje oczekiwanego wyjścia
używasz bitfields: K & R strona 150: *” Niemal wszystko na temat bitfieldów zależy od implementacji "*. Osobiście pominąłbym "Prawie". – cdarke
@cdark mówią * prawie *, ponieważ reszta jest nieokreślona;) – ouah