// Los campos de una union empiezan en el mismo lugar de la memoria.
#include <stdio.h>

struct both {
    int integer;
    double decimal;
};

union either {
    int integer;
    double decimal;
};

int main(void) {
    printf("sizeof(struct both) = %zu\n", sizeof(struct both));
    printf("sizeof(union either) = %zu\n", sizeof(union either));

    union either u;
    u.integer = 7;
    printf("guardé un int: %d\n", u.integer);

    u.decimal = 3.14;
    printf("guardé un double: %.2f\n", u.decimal);
    printf("leído como int: %d\n", u.integer);
    return 0;
}
