2012-03-20 2 views
0

-структуру структура является:Я не понимаю эту вложенную

struct 
{  
    int x; 
    struct 
    { 
     int y, z; 
    } nested; 
} 
i={.nested.y = 5, 6, .x = 1, 2}; 

Вопрос: Результат i.nested.y = 2; i.nested.z = 6;

Я не могу понять или понять это, внутреннее - это тоже структура, но объединение, так может ли кто-нибудь мне помочь?

+0

Возможный дубликат [Иерархизация структуры C] (http://stackoverflow.com/questions/17464822/c-structure-initialization) – alk

ответ

0

Хорошо, позвольте мне сказать, что это ужасный способ инициализации структуры, и если это вопрос домашней работы - это тоже не очень хорошо.
Однако, учитывая проблему, я полагаю, что в инициализации происходит следующее: во-первых, y инициализируется 5, а z, являясь следующим членом в структуре, инициализируется в 6. Затем x инициализируется к 1 и следующему члену в структуре, в этом случае y, инициализируется до 2 (что перезаписывает 5).

Что-то важное, чтобы отметить также, что вложенная структура не является объединением, а структурой - во-первых, потому что это то, что говорит код, а также потому, что если бы это был союз - это было бы невозможно в этом случае для y и z должны иметь разные значения, поскольку оба они будут храниться в одном месте в памяти.

+0

Да, вы правы, я понял, Thx. – kevinwei

Смежные вопросы