gcc.info: Cast to Union

Go forward to Case Ranges
Go backward to Labeled Elements
Go up to C Extensions
Go to the top op gcc

Cast to a Union Type

   A cast to union type is similar to other casts, except that the type
specified is a union type.  You can specify the type either with `union
TAG' or with a typedef name.  A cast to union is actually a constructor
though, not a cast, and hence does not yield an lvalue like normal
casts.  (*Note Constructors::.)
   The types that may be cast to the union type are those of the members
of the union.  Thus, given the following union and variables:
     union foo { int i; double d; };
     int x;
     double y;
both `x' and `y' can be cast to type `union' foo.
   Using the cast as the right-hand side of an assignment to a variable
of union type is equivalent to storing in a member of the union:
     union foo u;
     ...
     u = (union foo) x  ==  u.i = x
     u = (union foo) y  ==  u.d = y
   You can also use the union cast as a function argument:
     void hack (union foo);
     ...
     hack ((union foo) x);