听说是微软的面试题

CgPanda_ 2004-12-31 10:55:46
2写出下列程序在X86上的运行结果。


struct mybitfields

{

unsigned short a : 4; /* 提问1:这里的: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); /* 提问2:这句是难点吧?我猜了一下,可是与我上机验证的结果不符*/

printf("%d\n",i);

}
我验证了一下,结果是50
下面是我的程序
//micro_1.cpp
#include <iostream>

struct mybitfields

{

unsigned short a : 4; /*4不是赋值*/

unsigned short b : 5;

unsigned short c : 7;

}test;


int main()

{

int i;

test.a=2;

test.b=3;

test.c=0;


i=*((short *)&test);

std::printf("%d\n",i);
return 0;
}
...全文
623 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicememory 2005-01-08
  • 打赏
  • 举报
回复
这个细节和编译器是有关的
CgPanda_ 2005-01-08
  • 打赏
  • 举报
回复
这些细节不知道还真是糊涂啊
ybt631 2005-01-03
  • 打赏
  • 举报
回复
有意思!
skyofdreams 2005-01-03
  • 打赏
  • 举报
回复
很好的基础题,顶一下!

谁能告诉ME哪有微软的历年试题?
请给我发个消息。或贴出来, 谢谢。
bormen 2005-01-03
  • 打赏
  • 举报
回复
看来我得补补C语言的基础了~
usufu 2005-01-02
  • 打赏
  • 举报
回复
学习
Javpp 2005-01-02
  • 打赏
  • 举报
回复
学习
ahanfly 2005-01-02
  • 打赏
  • 举报
回复
mark
l_b_q 2005-01-02
  • 打赏
  • 举报
回复
03年的
l_b_q 2005-01-02
  • 打赏
  • 举报
回复
这个是去年的笔试题
renchen 2005-01-02
  • 打赏
  • 举报
回复
032 是16进制,如果用10进制输出时就是50.
liem 2005-01-02
  • 打赏
  • 举报
回复
struct mybitfields
{
unsigned short a : 4; /* 提问1:这里的:4是什么意思?我孤陋寡闻,从来没见过啊 */
unsigned short b : 5;
unsigned short c : 7;

}test;
这种表示法是位段。
a:4表示a占4位
b:5表示b占5位
c:7表示c占7位
内存分配方式是从低位到高位(a在低位,c在高位)
这样整个结构占16位,而一个short一般也是16位。
当有赋值:test.a=2(0010);test.b=3(00011);test.c=0(0000000);后,拼装成
0000000 00011 0010
这个二进制值(short)为十进制50
oyljerry 2005-01-02
  • 打赏
  • 举报
回复
位域操作
jiaben 2005-01-02
  • 打赏
  • 举报
回复
是的啊,不过现在大多数学校都教C++,里面不讲位结构的
  • 打赏
  • 举报
回复
哈哈哈哈哈...
笑死我了。
连知道位域(bitfield)也被称为“高手”。
看来扩招以后,真是一蟹不如一蟹。
这种题,说难一点,也就是初中计算机竞赛的水平罢了。
xuelong_zl 2005-01-02
  • 打赏
  • 举报
回复
up
dugangandy 2005-01-02
  • 打赏
  • 举报
回复
受教
morisecue 2005-01-02
  • 打赏
  • 举报
回复
不错,我想起来little-endian和big-endian的问题了,
以前看msdn觉得不太懂,谁来解释一下?是不是x86一定为little-endian的?
还有判断方法什么的,thx!
kobefly 2005-01-01
  • 打赏
  • 举报
回复
struct mybitfields

{

unsigned short a : 4; /* 提问1:这里的:4是什么意思?我孤陋寡闻,从来没见过啊 */

unsigned short b : 5;

unsigned short c : 7;

}test /*这里应该有个分号是吧*/

一些位字段啊,我困了回去睡觉了
明天再看看
sankt 2005-01-01
  • 打赏
  • 举报
回复
top
加载更多回复(15)

64,266

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧