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呢?
#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;