0 Pluspunkte 0 Minuspunkte

Wenn ich ein Union habe und es zu einem int mache

union MyUnion {
    int intVal;
    float floatVal;
};

union MyUnion m;
m.intValue = 1;

Kann ich den Datentyp noch einmal verändern?

bezieht sich auf eine Antwort auf: Was ist ein Union in C
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Ja du setzt dazu einfach den neuen Wert. Die ursprünglichen Informationen gehen damit aber verloren.

union MyUnion {
    int intValue;
    float floatValue;
};

int main() {
    union MyUnion u;
    
    u.intValue = 42;
    printf("Int value: %d\n", u.intValue);
    
    u.floatValue = 3.14;
    printf("Float value: %f\n", u.floatValue);  // Unerwartetes Verhalten!
    
    printf("Int value nach float assignment: %d\n", u.intValue);  // Unerwartetes Verhalten!
    
    return 0;
}
von