Я наткнулся на код, основанный на союзах в C. Вот код:
union {
struct {
char ax[2];
char ab[2];
} s;
struct {
int a;
int b;
} st;
} u ={12, 1};
printf("%d %d", u.st.a, u.st.b);
Я просто не мог понять, почему на выходе получается 268 0
. Как были инициализированы значения?
Как здесь работает объединение? Разве на выходе не должно быть 12 1
. Было бы здорово, если бы кто-нибудь смог подробно объяснить, что именно здесь происходит.
Я использую 32-битный процессор и Windows 7.