Хорошо, позвольте мне сказать, что это ужасный способ инициализации структуры, и если это вопрос домашней работы - это тоже не очень хорошо.
Однако, учитывая проблему, я полагаю, что в инициализации происходит следующее: во-первых, y инициализируется 5, а z, являясь следующим членом в структуре, инициализируется в 6. Затем x инициализируется к 1 и следующему члену в структуре, в этом случае y, инициализируется до 2 (что перезаписывает 5).
Что-то важное, чтобы отметить также, что вложенная структура не является объединением, а структурой - во-первых, потому что это то, что говорит код, а также потому, что если бы это был союз - это было бы невозможно в этом случае для y и z должны иметь разные значения, поскольку оба они будут храниться в одном месте в памяти.
Возможный дубликат [Иерархизация структуры C] (http://stackoverflow.com/questions/17464822/c-structure-initialization) – alk