共用体内存分布(创新工场)
求下列程序的输出结果(具体程序既不清楚了,考点在于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