#include #include typedef enum {FT, CT} kinds; typedef union { char a[8]; double b; } Uif; typedef struct { kinds kind; Uif uion; } Sif; void filldouble(Sif* sif, int v) { sif->kind=FT; sif->uion.b = 11.0*v; } void fillchar(Sif* sif, int v) { sif->kind=CT; sprintf(sif->uion.a, "V %d", 7*v); } void printSif(Sif* sif) { switch (sif->kind) { case FT: printf("DD %.2f\n", sif->uion.b); break; case CT: default: printf("CC %s\n", sif->uion.a); break; } } int main(void) { Sif array[10]; for (int i=0; i<10; i++) { if (i/2 == (i+1)/2) { fillchar(&array[i], i); } else { filldouble(&array[i], i); } } for (int i=0; i<10; i++) printSif(&array[i]); }