C++ 这个C++;密码?为什么s.u.a=20?
我希望输出像这样:C++ 这个C++;密码?为什么s.u.a=20?,c++,struct,unions,C++,Struct,Unions,我希望输出像这样:10 但是输出是这样的:1020 代码背后发生了什么 #include <iostream> using namespace std; typedef struct sdata{ int a; int b; union udata{ int a; int b; }u; }Data; int main() { Data s; s.a = 10; s.b = 20; s
10
但是输出是这样的:1020
代码背后发生了什么
#include <iostream>
using namespace std;
typedef struct sdata{
int a;
int b;
union udata{
int a;
int b;
}u;
}Data;
int main()
{
Data s;
s.a = 10;
s.b = 20;
s.u.a = 10;
s.u.b = 20;
cout << s.a << " " << s.b << " " << s.u.a << " " << s.u.b;
return 0;
}
#包括
使用名称空间std;
类型定义结构数据{
INTA;
int b;
乌达联盟{
INTA;
int b;
}u;
}数据;
int main()
{
数据挖掘;
s、 a=10;
s、 b=20;
s、 u.a=10;
s、 u.b=20;
cout与结构不同,union
一次只能容纳一个成员。每个成员从相同的内存地址开始,因此写入一个会影响另一个
在这种情况下,您的union有两个类型为int
的字段。因此,如果您将其中一个字段设置为其他字段,那么另一个字段将包含完全相同的值。因此,当您将s.u.b
设置为20时,它也会将s.u.a
设置为该值。我建议您阅读union的功能。您似乎正在使用它们,但希望它们的行为与struc一样ts.是什么让你相信它应该是10
?