免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1915 | 回复: 9
打印 上一主题 下一主题

网上看到的一道笔试题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-16 10:43 |只看该作者 |倒序浏览
#include<stdio.h>

struct mybitfields
{
        unsigned short a : 4;
        unsigned short b : 5;
        unsigned short c : 7;
}test;

void main(void)  
{
        int i;
        test.a=2;
        test.b=3;
        test.c=0;
        i=*((short *)&test);
        printf("%d ",i);
}
VC下输出结果是50.百思不得其解....

论坛徽章:
0
2 [报告]
发表于 2007-11-16 10:47 |只看该作者
应该是字节序问题   高地址在高位

论坛徽章:
0
3 [报告]
发表于 2007-11-16 10:49 |只看该作者
0x0032
结果是50

论坛徽章:
0
4 [报告]
发表于 2007-11-16 11:29 |只看该作者

回复 #3 XMDT 的帖子

为什么呢?
struct mybitfields
{
        unsigned short a;
        unsigned short b;
        unsigned short c;
}test;
但是如果test声明成这样的话,结果会是2
choc 该用户已被删除
5 [报告]
发表于 2007-11-16 11:48 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2007-11-16 12:00 |只看该作者

回复 #5 choc 的帖子

哦,明白了。但是结果是不是跟平台有关啊?还有能说下结构里冒号的用法吗?类里边也有这样的用法吗?以前没有碰到过。

论坛徽章:
3
天蝎座
日期:2014-10-25 13:44:312015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:31
7 [报告]
发表于 2007-11-16 12:10 |只看该作者
原帖由 holton 于 2007-11-16 12:00 发表
哦,明白了。但是结果是不是跟平台有关啊?还有能说下结构里冒号的用法吗?类里边也有这样的用法吗?以前没有碰到过。




冒号的用法没弄明白,怎么说 明白了?

冒号与类无关, 去google里面搜索一下 “位域”

论坛徽章:
0
8 [报告]
发表于 2007-11-16 12:25 |只看该作者
给16个比特位分三部分填上值,再把他们按照int输出
不过这个big-endian 和little-endian的问题不同CPU肯定不同的

5楼讲的好~!

论坛徽章:
0
9 [报告]
发表于 2007-11-16 12:31 |只看该作者
32bit CPU 不知道会不会把这个 test struct 补齐处理呢?
32bitCPU处理后再内存中按高低位排列是什么样子

论坛徽章:
0
10 [报告]
发表于 2007-11-16 13:29 |只看该作者
原帖由 dynamic516 于 2007-11-16 12:25 发表
给16个比特位分三部分填上值,再把他们按照int输出
不过这个big-endian 和little-endian的问题不同CPU肯定不同的

5楼讲的好~!


講得好,但big-endian和little-endian結果不同,結果不同了,哪有正確的答案,現在公司招聘都流行這種牛角尖題目,業界的悲哀。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP