#include <stdio.h>
union p
{
int x;
char y;
}
k = {.y = 97};
int main()
{
printf("%d\n", k.y);
return 0;
}
OUTPUT: 97
Я столкнулся с этим вопросом. Как мы знаем, мы можем только инициализировать первого члена Союза. Но в этом, во время инициализации, переменная y
инициализируется некоторым способом!Как объяснить этот выход C-союза
Может кто-нибудь объяснить мне, как к = {.Y = 97} нарушают правила, указанные в книге Денниса Ритчи «Союз может быть инициализирован только со значением типа его первого элемента» и инициализацией вторая переменная?
Кто сказал вам, что вы можете только инициализировать первый элемент некоторого 'union'? Это ошибка (вы можете инициализировать любой член какого-либо объединения). –
Назначенные инициализаторы были введены в c99. dmr не знал об этом еще в семидесятых годах. – wildplasser
Может быть, контрреволюция изменила правило. –