免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2107 | 回复: 4

[C] 位域问题 [复制链接]

论坛徽章:
0
发表于 2014-12-12 17:52 |显示全部楼层
  1. #include<string>

  2. struct bits{
  3.         unsigned char b1:1;
  4.         unsigned char b2:1;
  5.         unsigned char b3:1;
  6.         unsigned char b4:1;

  7.         unsigned char b5:1;
  8.         unsigned char b6:1;
  9.         unsigned char b7:1;
  10.         unsigned char b8:1;
  11. };

  12. int main(int argc, char* argv[])
  13. {
  14.         struct bits *pbit;
  15.         pbit = (struct bits *)malloc(sizeof(struct bits) * 4);
  16.         int *pint;
  17.         pint = (int *)pbit;
  18.         scanf_s("%d", pint);
  19.         for (int i=3;i>=0;i--) {
  20.             printf("%d", pbit[i].b8, pbit[i].b7, pbit[i].b6, pbit[i].b5, pbit[i].b4, pbit[i].b3, pbit[i].b2, pbit[i].b1 );
  21.         }

  22.     return 0;
  23. }
复制代码
为什么程序要先输出b8,b7才能把二进制正常打印出来

论坛徽章:
0
发表于 2014-12-12 17:54 |显示全部楼层
位域中的b1,b2是何种方式存取的

论坛徽章:
0
发表于 2014-12-12 18:07 |显示全部楼层
这个位域结构struct bits{
        unsigned char b1:1;
        unsigned char b2:1;
        unsigned char b3:1;
        unsigned char b4:1;

        unsigned char b5:1;
        unsigned char b6:1;
        unsigned char b7:1;
        unsigned char b8:1;
};
的存取是用的低字节序?

论坛徽章:
0
发表于 2014-12-12 18:08 来自手机 |显示全部楼层
跟主机序有关,大部分主机序都是反一反的。

论坛徽章:
0
发表于 2014-12-12 18:17 |显示全部楼层
一个字节不是不存在字节序问题么 如unsigned char num=1;在内存还是按0000 0001进行存取的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP