C语言union联合体,在内存中的排列!
来源:互联网 发布:角度计算器软件 编辑:程序博客网 时间:2024/05/22 02:41
编程中,需要使用到union联合体,不清楚到底在内存中是怎么对应的,所以写了个测试的函数,进行测试了下。发现bit位按照定义,定义在前的为实际的低位
#include <stdio.h>typedef unsigned long u32;typedef unsigned short u16;typedef struct { // bits description u16 DI0:1; // 0 u16 DI1:1; // 1 u16 DI2:1; // 2 u16 DI3:1; // 3 u16 DI4:1; // 4 u16 DI5:1; // 5 u16 DI6:1; // 6 u16 DI7:1; // 7 u16 DI8:1; // 8 u16 DI9:1; // 9 u16 DI10:1; // 10 u16 DI11:1; // 11 u16 DI12:1; // 12 u16 DI13:1; // 13 u16 rsvd:2; // 15:14 reserved}DIREG_BITS;typedef union { u16 all; DIREG_BITS bit;}DI_REG;int main(){DI_REG di_reg; di_reg.bit.DI0 = 1; di_reg.bit.DI1 = 0; di_reg.bit.DI2 = 0; di_reg.bit.DI3 = 0; di_reg.bit.DI4 = 0; di_reg.bit.DI5 = 0; di_reg.bit.DI6 = 0; di_reg.bit.DI7 = 0; di_reg.bit.DI8 = 0; di_reg.bit.DI9 = 0; di_reg.bit.DI10 = 0; di_reg.bit.DI11 = 1; di_reg.bit.DI12 = 1; di_reg.bit.DI13 = 1; printf("di_reg.all = %d\n",di_reg.all);sleep(50000);return 0;}
测试结果:打印结果为14437
10进制14337转换为2进制为:11100000000001。
至此解决了,在编程过程中的顺序对应问题。
- C语言union联合体,在内存中的排列!
- C语言中的联合体union
- C语言中的联合体union
- C语言中的联合体union
- C语言中的联合体union
- C语言中的联合体union
- C语言中的联合体union
- C语言中的联合体union
- C语言中的联合体union
- 关于C语言中的联合体Union问题
- C语言中的 联合体 union 说明
- C语言联合体union
- C语言联合体union
- c语言 union 联合体
- C语言联合体 union
- C语言--程序在内存中的分布
- C语言 程序在内存中的分布
- C语言在内存中的分布
- amazon的一个大牛谈各种语言
- Ansistring使用方法大全 1
- 关于播放列表的循环
- 宏定义的使用
- System.getProperty()
- C语言union联合体,在内存中的排列!
- c++builder快捷键大全
- 计算机 无符号 有符号区别
- 注册ActiveX控件的几种方法
- 放假了
- 温和的关闭连接
- C#将Json字符串反序列化成List对象类集合
- asp.net下载文件的常用方法大全
- 阿里软件资深架构师李战谈:开发者的人品问题