标题:怪啊?位结构 联合体!!!!!!谁能给出满意回复
取消只看楼主
herotobe
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2006-5-3
 问题点数:0 回复次数:1 
怪啊?位结构 联合体!!!!!!谁能给出满意回复

main()
{ typedef struct {unsigned b:1;} BIT; /*位结构 */
union
{int t;
BIT bit[16];
} x;
int i;
x.t=0;
for(i=0;i<16;i++)
printf("%d",x.bit[i].b);

getch(); /* 请不要删除此行 */
}

这段程序怎么不能打印 t 的二进制编码?程序哪儿出问题了

[此贴子已经被作者于2006-5-7 17:16:35编辑过]

搜索更多相关主题的帖子: 联合体 二进制 结构 BIT 打印 
2006-05-07 14:19
herotobe
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2006-5-3
得分:0 

以下对位结构的讲解来自:MyTC v5.2(编译器)自带的c语言教程。
请注意红色部分
二、位结构
位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构
比按位运算符更加方便。
位结构定义的一般形式为:
struct位结构名{
数据类型 变量名: 整型常数;
数据类型 变量名: 整型常数;
} 位结构变量;
其中: 数据类型必须是int(unsigned或signed)。 整型常数必须是非负的整
数, 范围是0~15, 表示二进制位的个数, 即表示有多少位。
变量名是选择项, 可以不命名, 这样规定是为了排列需要。
例如: 下面定义了一个位结构。
struct{
unsigned incon: 8; /*incon占用低字节的0~7共8位*/
unsigned txcolor: 4;/*txcolor占用高字节的0~3位共4位*/
unsigned bgcolor: 3;/*bgcolor占用高字节的4~6位共3位*/
unsigned blink: 1; /*blink占用高字节的第7位*/
}ch;
位结构成员的访问与结构成员的访问相同。
例如: 访问上例位结构中的bgcolor成员可写成:
ch.bgcolor

注意:
1. 位结构中的成员可以定义为unsigned, 也可定义为signed, 但当成员长
度为1时, 会被认为是unsigned类型。因为单个位不可能具有符号。
2. 位结构中的成员不能使用数组和指针, 但位结构变量可以是数组和指针,
如果是指针, 其成员访问方式同结构指针。
3. 位结构总长度(位数), 是各个位成员定义的位数之和, 可以超过两个字
节。
4. 位结构成员可以与其它结构成员一起使用。
例如:
struct info{
char name[8];
int age;
struct addr address;
float pay;
unsigned state: 1;
unsigned pay: 1;
}workers;'
上例的结构定义了关于一个工从的信息。其中有两个位结构成员, 每个位结
构成员只有一位, 因此只占一个字节但保存了两个信息, 该字节中第一位表示工
人的状态, 第二位表示工资是否已发放。由此可见使用位结构可以节省存贮空间


After all,tomorrow is another day!!!!
2006-05-07 16:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-62342-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.359710 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved