Причина в том, что их разные типы данных разделяют их. Ваш код union
определяет a
как целое число и b
как двойное, а значение b
остается неизменным даже после того, как он имеет те же адреса памяти. Если вы установите a
как double или b
как integer, вы получите значения, измененные вместе ..
Посмотрите на следующее:
union Data {
int a;
int b; // changed double to int
Data() {
a = 1;
b = 0.5;
}
};
Надеюсь, это поможет вам понимать.