A union is a struct, contains only one object from its list of members (although that object can be an array or a class type) during the program execution.
6.9 Unions of Structures
At run time memory allocated to the variable how_many does NOT include room for all three components. Instead, how_many can contain only one of the following: either a long value or an int value or a float value.
The primary purpose pf the union of the construction is to save memory. Because the compiler does not track which union field is currently selected, the use of unions is somewhat dangerous.