C++ 公用体问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 09:12:31
#include"iostream"
#include"iomanip"

using namespace std;

int main(void)
{
union
{
char i[2];
short int k;

}r;
r.i[0]=0;
r.i[1]=2;
cout<<r.k;
return 0;
}

为什么等于512呢?

0x200 = 512

没错啊

低位放在前面的0x00 0x02

r.i[1]=2=(00000010)2
r.i[0]=0=(00000000)0
k=(0000001000000000)2=512

主要是看内存的状态:
char i[2]占用2个字节即16个bit
short int k也占用2个字节;

数组进行赋值后的内存为:0000 0010 0000 0000
公用体就是共用内存:把上面的2进制看成短整型就是2的9次方即512;