Andrew Haley <aph@xxxxxxxxxx> writes: > On 11/12/2010 03:21 PM, Francis Moreau wrote: >> Andrew Haley <aph@xxxxxxxxxx> writes: >> >>> On 11/12/2010 02:55 PM, Francis Moreau wrote: > >>>> "Segher Boessenkool" <segher@xxxxxxxxxxxxxxxxxxx> writes: >>>> >>>> [...] >>> >>>> >>>>>> >>>>>> Looking again at the second example: >>>>>> >>>>>> int f() { >>>>>> union a_union t; >>>>>> int* ip; >>>>>> t.d = 3.0; >>>>>> ip = &t.i; >>>>>> return *ip; >>>>>> } >>>>>> >>>>>> could you tell me what the effective type of 't.i' object ? >>>>> >>>>> int, if you can say that object exists at all: it does not have a stored >>>>> value. The stored value of t is a double with value 3.0 . You can >>>>> take its address and access it via that as "double" (or "char"), or you >>>>> can access it as the union it is. You can not access it as "int". >>>>> >>>> >>>> BTW, does your reasoning rely on the C standard ? >>> >>> It's a gcc extension. 5.25, Cast to a Union Type >> >> How can it be related with the existence of an union member ? > > I don't understand your question. Rather than attempt to answer, > I'll ask you to rephrase your question. Please see my answer to Segher. -- Francis