c语言中位字段与结构联合的组合使用详解

2016-02-19 09:09 11 1 收藏

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐c语言中位字段与结构联合的组合使用详解,无聊中的都看过来。

【 tulaoshi.com - 编程语言 】

举例:
===================================================
代码如下:

/** INITRM - Initialization of internal ram position register; 0x0000 0010 **/

typedef union {

   byte Byte;

   struct {

      byte RAMHAL :1;

      byte :1;

      byte :1;

      byte RAM11 :1;

      byte RAM12 :1;

      byte RAM13 :1;

      byte RAM14 :1;

      byte RAM15 :1;

   } Bits;

   struct {

      byte :1;

      byte :1;

      byte :1;

      byte grpRAM_11 :5;

   }MergedBits;

} INITRMSTR;

那么赋值方式就有三种,比如直接给INITRMSTR赋值

INITRMSTR = 0xEF;

也可以位字段赋值

INITRMSTR.Bits.RAM15 = 1;

也可以多位的位字段赋值

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

INITRMSTR.MergedBits.grpRAM_11 = 26

(26是十进制,转换成二进制是11010, 直接表示 RAM_11 = 0, RAM_12 = 1, RAM_13 = 0, RAM_14 = 1, RAM_15 = 1)

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

需要注意的是,在二进制中顺序是从右向左,在这个结构体中是从上向下.

来源:http://www.tulaoshi.com/n/20160219/1589759.html

延伸阅读
基本解释 const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。 虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。 问题: const变量 & ...
C语言中trim的实现 作者:老包米 描述     自己用ATL写了个COM,不支持MFC,所以无法用CString,但支持C编码,遇到字符串(字符数组),想去掉字符串中的空格,C下没有TRIM函数,找又没找到,几行代码自己写吧。往后大家万一遇到用着也方便。 说明 ...
我们在C语言编程中会碰到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的: int printf( const char* format, ...); !-- frame contents -- !-- /frame contents -- 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法: printf("%d",i); printf...
printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少。 ②-:有-表示左对齐输出,如省略表示右对齐输出。 ③0:有0表示指定空位填0,如省略表示指定空位不填。 ④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位...
相信很多人都看过设计模式方面的书,大家有什么体会呢?Bridge,Proxy,Factory这些设计模式都是基于抽象类的。使用抽象对象是这里的一个核心。        !-- frame contents -- !-- /frame contents -- 其实我觉得框架化编程的一个核心问题是抽象,用抽象的对象构建程序的主体框架,这...

经验教程

424

收藏

65
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部