「共用体は、一度に 1 つの非静的データ メンバーのみを保持できる特別なクラス タイプです」と言われています。( http://en.cppreference.com/w/cpp/language/union )
しかし、どうすれば複数のメンバーを保持できるのでしょうか?
y
は 8 バイトでx
、4 バイトです。union のサイズは、MAX 要素のサイズ (8 バイト) です。4 + 8 = 12バイトを保持できません...
よくわかりません。
#include <stdio.h>
#include <stdlib.h>
union number {
int x;
double y;
};
int main()
{
union number value;
// ok
value.x = 1;
printf("\n int: %5d\ndouble: %f\n", value.x, value.y);
// ok
value.y = 1.0;
printf("\n int: %5d\ndouble: %f\n", value.x, value.y);
// NOT OK! But if I swap `value.x and value.y` it will work properly...
value.y = 1.0;
value.x = 1;
printf("\n int: %5d\ndouble: %f\n", value.x, value.y);
return 0;
}
出力は