#include <stdio.h>
union p
{
int x;
char y;
}
k = {.y = 97};
int main()
{
printf("%d\n", k.y);
return 0;
}
OUTPUT: 97
Natknąłem się na to pytanie. Jak wiemy, możemy tylko zainicjować pierwszego członka Unii. Ale w tym momencie, w czasie inicjalizacji, zmienna y
jest inicjowana przez pewną określoną metodę!Jak objaśnić tę C Union Output
Czy ktoś może wyjaśnić mi jak k = {.y = 97} łamie reguły zawartej w książce Dennisa Ritchiego „Unia może zostać zainicjowany wyłącznie z wartością typu jego pierwszego członu” i inicjowanie zamiast drugiej zmiennej?
Kto ci powiedział, można tylko zainicjować pierwszy człon jakiegoś 'unia? To błąd (możesz zainicjować dowolnego członka jakiegoś związku). –
Wyznaczone inicjatory zostały wprowadzone w c99. dmr o tym nie wiedział w latach siedemdziesiątych. – wildplasser
Może endianness odwrócił zasadę. –