| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 377 人关注过本帖
标题:请问谁知道下面这两段程序的区别?
只看楼主 加入收藏
何围
Rank: 2
等 级:论坛游民
帖 子:4
专家分:20
注 册:2012-4-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
请问谁知道下面这两段程序的区别?
typedef union bytestr
{
    char ubyte ;
    struct bitf
    {            
        char _0 : 1 ;
        char _1 : 1 ;
        char _2 : 1 ;
        char _3 : 1 ;
        char _4 : 1 ;
        char _5 : 1 ;
        char _6 : 1 ;
        char _7 : 1 ;
    };
};

typedef struct bitf
{            
    char _0 : 1 ;
    char _1 : 1 ;
    char _2 : 1 ;
    char _3 : 1 ;
    char _4 : 1 ;
    char _5 : 1 ;
    char _6 : 1 ;
    char _7 : 1 ;
} ;
这里面的1是什么意思?区别在哪?
2013-11-17 20:00
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:10 
char _0 : 1 ; 一个char共8位,代表变量_0只用char其中一位
union和struct的区别在于存储所用的空间不一样,第一个union存储空间是最大的变量所占存储空间占8bits,第二个struct内存是对齐的,存储空间是所有变量所占存储空间占8bits

埋头做牛,抬头做人,低头做狗
2013-11-18 07:57
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:0 
char _0 : 1 ; 相当于以位定义变量
        char _0 : 1 ;
        char _1 : 1 ;
        char _2 : 1 ;
        char _3 : 1 ;
        char _4 : 1 ;
        char _5 : 1 ;
        char _6 : 1 ;
        char _7 : 1 ;
_0,_1,。。。_7八个变量用了char的8个位

埋头做牛,抬头做人,低头做狗
2013-11-18 08:01
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:0 
在单片机中因为存储空间的限制,这种用法比较常见

埋头做牛,抬头做人,低头做狗
2013-11-18 11:45
何围
Rank: 2
等 级:论坛游民
帖 子:4
专家分:20
注 册:2012-4-1
收藏
得分:0 
回复 3楼 pink_duo
请问这里面的1是代表负的初始值为1还是代表1位?例如:char _0: 1;
2013-11-18 20:30
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:0 
以下是引用何围在2013-11-18 20:30:57的发言:

请问这里面的1是代表负的初始值为1还是代表1位?例如:char _0: 1;
代表1位

埋头做牛,抬头做人,低头做狗
2013-11-18 20:32
Hacker_HW
Rank: 2
等 级:论坛游民
帖 子:1
专家分:10
注 册:2013-11-18
收藏
得分:10 
回复 6楼 pink_duo
不是char _0 : 1 ;中的 _0 代表的是一位(第1位),1代表的是初值为1吗?
2013-11-18 20:38
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:0 
以下是引用Hacker_HW在2013-11-18 20:38:57的发言:

不是char _0 : 1 ;中的 _0 代表的是一位(第1位),1代表的是初值为1吗?
初值不是1,这里只是分配存储空间,和初值没关系

[ 本帖最后由 pink_duo 于 2013-11-18 21:29 编辑 ]

埋头做牛,抬头做人,低头做狗
2013-11-18 21:02
快速回复:请问谁知道下面这两段程序的区别?
数据加载中...
 
   



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

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