您的位置:首页 > 其它

大华2013届校园招聘 :联合体试题

2013-10-08 16:57 176 查看
8.Intel X86 PC上以下程序运行的输出值是________

[cpp] view
plaincopy

int main(int argc, char *argv[])

{

union

{

struct

{

unsigned short s1:3;

unsigned short s2:3;

unsigned short s3:3;

}x;

char c;

}v;

v.c = 103;

cout<<v.x.s1<<endl;

return 0;

}

[cpp] view
plaincopy

答:7

1. 因为103二进制是01100111。
2.因为x和c为联合体,二者共用一段内存,这段内存共9字节,而v.c = 103,即这八字节内存存放的东西为103,也就是 01100111
3.s1、s2、s3分别占3字节,3字节,3字节(我们平常用到的都是小端模式,故s1取111,s2取100 ,s3取001)所以输出的内容就为:7,4,1


103转换为8位的二进制为01100111,存储方式如下:

01|100|111

__|___|___

s3|s2 |s1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: