YKY8871212
驱动牛犊
驱动牛犊
  • 注册日期2003-07-03
  • 最后登录2007-06-20
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1270回复:6

请教C51中的一个语句?是D12开发板上的

楼主#
更多 发布于:2004-07-17 15:57
typedef union _epp_flags
{
    struct _flags
    {
        unsigned char timer                   : 1;
        unsigned char bus_reset               : 1;
        unsigned char suspend                 : 1;
        unsigned char setup_packet            : 1;
        unsigned char dma_state              : 2;
    } bits;
    unsigned short value;
} EPPFLAGS;
我的问题:unsigned char timer : 1;
“:”是什么意思啊,是初始化吗?不是这样写“unsigned char timer=1;”还有short和int一样吗?教教我吧
YKY8871212
驱动牛犊
驱动牛犊
  • 注册日期2003-07-03
  • 最后登录2007-06-20
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-17 17:24
终于懂了,原来是位域!在C51BBS上问到的!
zyboy
驱动牛犊
驱动牛犊
  • 注册日期2004-05-10
  • 最后登录2005-04-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-18 09:58
大哥,能不能讲详细一点,我也对这个问题困惑呀?这个后面的:1能不能去掉呀,对程序有没有影响呀?
davidxu1981
驱动牛犊
驱动牛犊
  • 注册日期2003-04-21
  • 最后登录2005-01-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-18 15:13
: 后面的数字表示结构体中该成员占用几个bit.

struct A
{
   char a:4;
   char b:4;
}c;

这样的定义中 a, 占用低4bit,b占用高4bit. 这个c 就是1个byte.
(51系统中是这样的,别的系统要看是LSB还是MSB)

如果去掉,完全没有问题,但是变量C就要占用2各BYTE.
zyboy
驱动牛犊
驱动牛犊
  • 注册日期2004-05-10
  • 最后登录2005-04-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-21 09:30
谢谢davidxu1981讲解,解释的非常好
 ;)
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-21 10:59
建议找一本C语言的书看看。
yz_chenfei
驱动牛犊
驱动牛犊
  • 注册日期2002-11-26
  • 最后登录2006-07-28
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-22 16:25
这是C语言中的联合
游客

返回顶部