Инициализация союзов и структур

Я наткнулся на код, основанный на союзах в 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.

13
задан undur_gongor 7 December 2011 в 15:42
поделиться