The information in this article applies to:
SUMMARYWhen initializing a union, the initialization value is applied to the first member of the union even if the type of the value matches a subsequent member. As stated in the ANSI Standard, Section 3.5.7:
Because you cannot initialize the value of any member of a union other than
the first one, you must assign their values in a separate statement.
Initializing a union with a value intended for a subsequent member causes
that value to be converted to the type of the first member.
MORE INFORMATIONThe following example demonstrates the issue: Sample Code
The output from the example, though not what is intended, is as
follows:
To associate a value with "b", you can reverse the order of the
members, as in the following:
Or, you can retain the order of the elements and assign the value in a
separate statement, as in the following:
Either of these methods creates the following output:
Under Windows NT, the output would be as follows:
REFERENCESFor examples and explanation of possible compiler errors and warnings generated when attempting to initialize a non-primary union element, please see the following article in the Microsoft Knowledge Base: Q39910 PRB: Initializing Non-Primary Union Element Produces Errors Additional query words:
Keywords : kbcode kbLangC kbVC100 kbVC150 kbVC151 kbVC152 kbVC200 kbVC210 kbVC400 kbVC500 kbVC600 |
Last Reviewed: July 1, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |