联合体并不重是后赋值的覆盖前赋值的
当联合体里有数组时,比如:
#include <bits/stdc++.h>
using namespace std;
int main() {
union {
unsigned char a1;
unsigned int a2[2];
}c;
c.a2[0]=0x31;
c.a2[1]=0x32;
cout<<c.a1<<endl;
return 0;
}
c.a1会被数组的第一个元素即c.a2[0]覆盖,而不是被最后赋值的c.a2[1]
本文探讨了C++中联合体(union)使用时,数组元素如何影响联合体内其他成员的值。示例代码显示,当向联合体内的数组赋值后,联合体的首元素(c.a1)被数组的第一个元素(c.a2[0])覆盖,而非最后一个赋值的元素(c.a2[1])。这揭示了C++内存管理和类型转换的微妙之处。
486

被折叠的 条评论
为什么被折叠?



