Я не понимаю эту вложенную структуру - PullRequest
0 голосов
/ 20 марта 2012

Структура:

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

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

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

1 Ответ

0 голосов
/ 15 апреля 2012

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

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

...