Мой код
// using_a_union.cpp
#include
union NumericType
{
int iValue;
long lValue;
double dValue;
};
int main()
{
union NumericType Values = { 10 }; // iValue = 10
printf("%d\n", Values.iValue);
Values.dValue = 3.1416;
printf("%d\n", Values.iValue); // garbage value
}
Почему я получаю ненужное значение, когда пытаюсь напечатать Values.iValue
после выполнения Values.dValue = 3.1416
?
Я думал, что схема памяти будет похожа на это . Что происходит с Values.iValue
и
Values.lValue;
, когда я назначаю что-то в Values.dValue
?