#include<iostream>
#include<iomanip>
using namespace std;
union
{
int x;
struct
{
int m;
float n;
}y;
}a;
main()
{
a.x=25;
a.y.m=100;
a.y.n=58.4;
cout<<a.x;
}
#include<iostream>
#include<iomanip>
using namespace std;
union
{
int x;
struct
{
int m;
float n;
}y;
}a;
main()
{
a.x=25;
a.y.m=100;
a.y.n=58.4;
cout<<a.x;
}
结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员
你给a.y.m赋值100,此时共用体内存空间存放的数据就会变成100,之后再给a.y.n赋值58.4,由于a.y是一个结构体,所以此时内存空间存放的应该是{100,58.4},由于你输出的要求是int,根据占位可知道最后输出的只有前8个字节,也就会输出100了