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

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了

    评论
    解决 1 无用 1
    打赏 举报

相关推荐 更多相似问题