Angenommen, ich habe eine Union u mit zwei Mitgliedern a
und b
des gleichen Typs (z. B. Int).Union-Mitglieder des gleichen Typs
union u{
int a,b;
char c;
};
Wenn ich a
schreiben, übergeben Sie es von Wert auf eine Funktion und die Funktion liest aus b
, erwartet den a
Wert zu erhalten, wird es Probleme, wenn man bedenkt a
und b
die gleiche Art haben? Müssen die Member-Lesevorgänge die Schreibvorgänge der Member genau spiegeln?
C11 Entwurf N1548 könnte sagen, dass es keine Probleme geben wird. Ich kann es nicht sicher sagen. Liest noch. Eine Fußnote: "95) Wenn das Mitglied, das den Inhalt eines Union-Objekts gelesen hat, nicht mit dem zuletzt verwendeten Element einen Wert im Objekt speichert, wird der entsprechende Teil der Objektdarstellung des Werts als neu interpretiert eine Objektdarstellung in dem neuen Typ, wie in 6.2.6 beschrieben (ein Prozess, der manchmal '' punning '' genannt wird). Dies könnte eine Trap-Repräsentation sein. " – Ryan