一根路过的废柴 2021-02-11 12:36 采纳率: 95.2%
浏览 238
已采纳

union里面嵌套struct,最后输出结果为什么是100而不是58.4

#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;
}

 

  • 写回答

1条回答 默认 最新

  • 书山客 2021-02-11 13:40
    关注

    结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员

    你给a.y.m赋值100,此时共用体内存空间存放的数据就会变成100,之后再给a.y.n赋值58.4,由于a.y是一个结构体,所以此时内存空间存放的应该是{100,58.4},由于你输出的要求是int,根据占位可知道最后输出的只有前8个字节,也就会输出100了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?