Chinaunix首页 | 论坛 | 博客
  • 博客访问: 981500
  • 博文数量: 186
  • 博客积分: 10020
  • 博客等级: 上将
  • 技术积分: 1676
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-14 17:08
文章存档

2011年(5)

2009年(11)

2008年(2)

2007年(111)

2006年(57)

我的朋友

分类: LINUX

2007-04-17 19:11:30

 #include
int main()
{

//位字段声明

struct pack
{
unsigned  a: 2;       //说明a占2位
unsigned  b: 6;      //b占6位
} data;


printf("%d\n",sizeof(data));


data.b = 64;
printf("%d\n",data.b);
}

在VC编译器下运行,几个总结:

1。当你未初始化结构体的变量时,打印它里面的数据,结构都为零。

2。unsigned默认为unsigned int

3。上面的a + b只占一个字节,小于一个int,结果整个结构体只占4个字节(int占4个字节)。若它们所占的字节超过4,那么结构体将占两个int,即8个字节。要注意的是,无论是a还是b都不能超过它的类型的大小。

4。当给a或b赋值时,若超过它们的位数,输出的指将被截断。

5。结构体所占字节,要看a+b的结构值是多少,假如小于4字节(一个int),那么结构体将占4个字节,假如超过那么结构体就是8个字节,4的倍数。

注意:可以被说明成signed 但都要明确说明,还有就是不能对a,b进行&操作,因为它们不是地址。

阅读(2127) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~