共用体内存分布(创新工场)
求下列程序的输出结果(具体程序既不清楚了,考点在于union
type的内存分布):
一个联合体的各个成员占用相同的内存空间,联合体的长度等于其中最长成员的长度。
#include <stdio.h>
#include <iostream>
#include<bitset>
using namesapce std;
union u
{
int i;
char x[2];
}a;
int main()
{
a.x[0] = '1';
a.x[1] = '2';
bitset<32> bin(a.i);
bin = a.x[0];
cout<<"a.x[0]的二进制数为: "<<bin<<endl;
bin = a.x[1];
cout<<"a.x[1]的二进制数为: "<<bin<<endl;
printf("%d\n", a.i);
}
a.x[0] = '1'; a.x[1] = '2'
a.x[0]的二进制数为(从高位到低位): 00000000000000000000000000110001
a.x[1]的二进制数为(从高位到低位): 00000000000000000000000000110010
共用体变量的内的各个成员都是从低字节开始公用的;
因此a.i的二进制码为: 00000000000000000011001000110001
所以程序输出为12849.
A的ASCII码:65 a的ASCII码:97 1的ASCII是49
参考网址:http://dongfkxiang.blog.51cto.com/1792080/512825