一道关于联合(union)的笔试题

1、原题:



2、联合我并不熟悉,因为我不太用。但是,结构体我很熟悉,因为我经常用。下面根据结构与联合比较,得出一些两者的差别:

(1). 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻,  联合中只存放了一个被选中的成员(所有成员共用一块地址空间),  而结构的所有成员都存在(不同成员的存放地址不同)。
(2). 对于联合的不同成员赋值,  将会对其它成员重写, 原来成员的值就不存在了,  而对于结构的不同成员赋值是互不影响的。


3、再说上面那道题,a是一个联合变量,其中的i和数组x共用存储空间,就如同一个人有两件衣服,分别穿上后看着可能不一样,但是脱了衣服后都是这个人,是一样的。


    现在,通过数组x给空间数据内容,那么这块共用的空间内存储的二进制信息应该为:(0000 1010)2 = (10)10, ( 0000 0001)2 = (1)10


4、现在的问题是10和1在内存中哪个是低位,哪个是高位以及对齐方式(或着说字节存储机制)?有两种可能:

(1)0000 1010 0000 0001,即1010 0000 0001,即十进制的2561;

(2)0000 0001 0000 1010,即1 0000 1010,即十进制的266;


5、所以,这题的程序也可以用来检测计算机的大小端。输出266为小端。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值