Я читал о объединении в C от K & R, насколько я понял, единственная переменная в объединении может содержать любой из нескольких типов, и если что-то хранится как один тип и извлекается как другое, результат получается чисто реализация определена.
Теперь проверьте этот фрагмент кода:
#include<stdio.h>
int main(void){
union a{
int i;
char ch[2];
};
union a u;
u.ch[0] = 3;
u.ch[1] = 2;
printf("%d %d %d\n",u.ch[0],u.ch[1],u.i);
return 0;
}
Вывод:
3 2 515
Здесь я присваиваю значения в u.ch
, но получая как из u.ch
, так и u.i
, определена ли реализация? или я делаю что-то действительно глупо?
Я знаю, что это может показаться очень новичком для большинства других людей, но я не могу понять причину этого вывода.
Спасибо,