CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

谁告诉我一下这种语法是什么意思?

楼主gemo(欧尼迪巴戈)2006-05-02 13:47:06 在 C/C++ / C语言 提问

#include   <stdio.h>  
  struct   Node  
  {  
  unsigned   int   na:3;  
  unsigned   int   nb:4;  
  unsigned   int   nc:6;  
  unsigned   int   nd:4;  
  char   ch:8;  
  };  
   
  void   main(void)  
  {  
      Node   seg;  
      printf("sizeof   of   struct   %d\n",   sizeof(seg));  
  }  
   
  结果显示   8  
  unsigned   int   na:3;   到底是什么意思? 问题点数:20、回复次数:8Top

1 楼whq263(玄豹)回复于 2006-05-02 13:55:47 得分 5

unsigned   int   na:3是说na变量占3   bits  
  之所以sizeof(Node)   =   8与编译器对齐关系有关Top

2 楼gemo(欧尼迪巴戈)回复于 2006-05-02 14:04:09 得分 0

那为什么又不能直接在main里面定义unsigned   int   na:3;呢?Top

3 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2006-05-02 14:58:53 得分 5

这个是结构体里面的位域问题~  
  在main函数里面直接定义当然不可以了~~~Top

4 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2006-05-02 15:02:15 得分 0

对于上面的结果为什么为8,这个和编译器的对齐方式有关~  
  具体可以参考:http://blog.csdn.net/O_OCalmHawk/archive/2005/04/20/356126.aspxTop

5 楼niatclock(豆豆雅)回复于 2006-05-02 17:44:36 得分 5

Node   seg;  
   
  sizeof(seg);  
   
  //取Node结构体中位数最大者,Node结构体中char   ch:8;为最大,所以输出8Top

6 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2006-05-03 14:02:27 得分 4

bit   filed   位域  
   
  老谭的《C...》提到过Top

7 楼tomtom123(abc)回复于 2006-05-03 22:49:48 得分 0

markTop

8 楼Ninstein(www.Ninstein.Com)回复于 2006-05-03 23:47:17 得分 1

位段   接省空间Top

相关问题

关键词

得分解答快速导航

  • 帖主:gemo
  • whq263
  • snowbirdfly
  • niatclock
  • blh
  • Ninstein

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo