Why do always must to read the last element we write with C unions? : I'm reading some slides on `enum`s and `unions`, and one slide says:

> You must always read the last element you write.

and then there's the following code:

    union Value {
        int int_value; 
        float float_value; 
        char *str_value;
    };
    
    int main(int argc, char *argv[]) { 
        union Value v;
        v.str_value = "ciao"; 
        v.int_value = 100;
    
        printf("v = %s\n", v.str_value); /* undefined behavior! */ 
    }

What does it mean that we have always to read the last element we write? Why accessing the field `str_value` of the union `v` is undefined behaviour?