Спасибо за ваши предложения. Я пробовал это на множестве примеров и смотрел, что размер объединения эквивалентен (размер максимального элемента) + отступ (в зависимости от размера самого высокого используемого типа данных).
я печатаю размер союза, как это:
union u {
char c[5];
int i;
} un;
используя это:
int _tmain(int argc, _TCHAR* argv[])
{
printf("size of union = %d ",sizeof(un));
return 0;
}
Я получаю ответ 8 с использованием Visual C ++, но я ожидал 5. Почему?
Ну, для того же примера, я сделал что-то вроде этого:
int i1 = 0x98761234;
un.i = i1;
printf("\n un.c[0] = %x ",un.c[0]);
printf("\n un.c[1] = %x ",un.c[1]);
printf("\n un.c[2]= %x ",un.c[2]);
printf("\n un.c[3] = %x ",un.c[3]);
printf("\n un.c[4] = %x ",un.c[4]);
printf("size of union = %d ",sizeof(un));
я получил результаты, как
un.c[0] = 34;
un.c[1] = 12;
un.c[2] = 76;
un.c[3] = ffffff98;
почему 6fs на un.c [3]