C++ 中的联合体是多个变量共享一段内存(相互覆盖),联合体的内存占用是所有成员中内存最大的那个所占用的大小。
#include <iostream>
union { int i;
char st[2];
}un;
int main()
{
un.st[0] = 6;
un.st[1] = 10;
cout<<un.i<<endl;
return 0;
}
程序的输出结果是多少?
采用的存储方法是“低位在前”,st[0] 是00000110,st[1] 是00001010,因为是共享内存,所以输出 i的时候是把整个内存作为一个看待,即st[1]st[0],也就是0000101000000110。所以输出是2566