LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 617|回复: 1

请问下面程序的输出为什么是1,-1,-4?

[复制链接]
发表于 2005-10-24 13:23:35 | 显示全部楼层 |阅读模式
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>

struct bit
{ int a:3;
int b:2;
int c:3;
};

int main()
{
  bit s;
  char *c = (char*)&s;
  *c = 0x99;
  cout << s.a <<endl <<s.b<<endl<<s.c<<endl;
  
  return 0;
}

运行在intel平台下的Linux2.4.18
发表于 2005-10-24 14:02:57 | 显示全部楼层
最好还是不要用位域了,除非是为了和老程序兼容
现在又不缺这点内存

0x99二进制是10011001
套到bit 结构上,把001给了a,11给了b,100给了c
这里面涉及数据在内存中的存储方式,大头小头,搞的你晕头,呵呵
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表