#include <stdio.h>
union p
{
int x;
char y;
}
k = {.y = 97};
int main()
{
printf("%d\n", k.y);
return 0;
}
OUTPUT: 97
Mi sono imbattuto in questa domanda. Come sappiamo, possiamo solo inizializzare il primo membro dell'Unione. Ma in questo, al momento dell'inizializzazione, la variabile y
viene inizializzata tramite un determinato metodo!Come spiegare questa C Union Output
Qualcuno può spiegare questo a me come k = {.Y = 97} sta rompendo la regola indicata nel libro di Dennis Ritchie "Unione possono essere inizializzati solo con un valore del tipo del suo primo membro" e l'inizializzazione seconda variabile invece?
Chi ti ha detto è possibile inizializzare solo il primo membro di qualche 'union'? Questo è un errore (puoi inizializzare qualsiasi singolo membro di qualche sindacato). –
Gli inizializzatori designati sono stati introdotti in c99. dmr non ne sapeva nulla negli anni settanta. – wildplasser
Forse endianness ha invertito la regola. –