1.共用体内存分布

来源:互联网 发布:水果淘宝 编辑:程序博客网 时间:2024/05/16 15:07
共用体内存分布(创新工场)
求下列程序的输出结果(具体程序既不清楚了,考点在于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


原创粉丝点击