Концептуальная проблема в Union

Мой код

// 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 ?

8
задан timrau 15 August 2012 в 17:15
поделиться