Если вы думаете о том, как работает профсоюз, у вас есть ответ, который, конечно, да (почему бы и нет)?Как мы и ожидаем, объединение достаточно велико, чтобы вместить самый большой элемент данных, и, следовательно, автоматически меньше.Битовые поля упакованы в «контейнеры», и компилятор должен иметь возможность оценить их окончательный реальный размер.Ниже приведены некоторые интересные факты (и, конечно, неправильное использование объединения, но не для присутствия битового поля!)
#include <stdio.h>
union test {
int a:5;
int b:12;
float c;
double d;
int x;
};
int main()
{
union test x;
printf("%d\n", sizeof(x));
x.a = 31;
printf("%d\n", x.a);
printf("%d\n", x.b);
x.c = 1.23;
printf("%d\n", x.a);
printf("%f\n", x.c);
x.x = 31;
printf("%d\n", x.x);
printf("%d\n", x.a);
printf("%d\n", x.b);
}