我刚开始我的追求与工会时,我发现一个很奇怪的C++联盟成员未初始化
如果我运行这个程序
#include <iostream>
using namespace std;
union myun{
public:
int x;
char c;
};
int main()
{
myun y;
//y.x=65;
y.c='B';
cout<<y.x;
}
输出是一些垃圾值,如果改变其价值并没有改变yc 接着我这样做
#include <iostream>
using namespace std;
union myun{
public:
int x;
char c;
};
int main()
{
myun y;
y.x=65;
y.c='B';
cout<<y.x;
}
输出是如预期为66,因为y.c = 'B' 通过其ASCII值(66)替换65。 任何人都可以解释第一个案例吗?
在设置另一个之后从另一个读取的是UB,IIRC。 – chris