Rolf M. schrieb:
> Wilhelm M. schrieb:
>> Der normative Text ist:
>>
>> "A postfix expression followed by the . operator and an identifier
>> designates a member of a structure or union object. The value is that of
>> the named member,107) and is an lvalue if the first expression is
>> an lvalue. If the first expression has qualified type, the result has
>> the so-qualified version of the type of the designated member."
>
> Dort sehe ich nirgends eine explizite Erlaubnis, ein anderes Element als
> das zuletzt geschriebene zu lesen.
Weil das Konzept des active-members in C nicht gibt im Gegensatz zu C++.
Deswegen reicht es hier aus, einfach zu schreiben, dass der Wert der
union dem Wert das benutzen Elementes entspricht (Achtung: es kann auch
hier trap-representations geben).
> Die Fußnote beschreibt es komplett und gibt in Klammern an, dass man das
> "type punning" nennt.
>
> Das ist für mich kein Zeichen dafür, dass unions wie du sagst explizit
> dafür vorgesehen wären, sondern eher, dass es auf Grund häufiger Nutzung
> eben akzeptiert wird.
Natürlich war es ganz ursprünglich da, um Speicher zu sparen.
Die Formulierung ist eine Klarifizierung gegenüber C89.