当我们用C语言进行编程时,经常遇到需要将不同类型的变量进行类型转换,我们用得比较多的都是用强转方式进行转换。但是如果我们定义了一个结构体,而这个结构体的成员对象有可能是u8、int_8t、u16、int_16t......等等。那这时候该怎么解决这个问题呢?具体如下:

// ---parameterSet.htypedef union
{u16                toDataU16;  int16_t         toDataI16;  u8              toDataU8;       int8_t          toDataI8;   char            toByte[2];
}byte2Union; // 占用2个字节的联合体typedef struct
{u8             setOID;      // 标识符byte2Union     setData;     // 待设置值byte2Union     currentData; // 值byte2Union     minData;     // 最小值(包含)byte2Union     maxData;     // 最大值(包含)    u8             setFlag;     // 需要设置标志u8             notSetFlag;  // 无需设置到底层模块(0:需要设置 1:不需要设置)            u8             signFlag;    // 有符号标志u8             Length;      //标识符数据长度u32            Address;     // 存储地址void (*function)(u8 * ,u16);  // 备注函数指针,处理一些特殊情况
} parameterSetStruct;         

上面的程序内容中setData、currentData、 minData  、maxData 这几个变量存在需要接收不同长度和类型的数据,我们这边需要接收最长两个字节的数据类型,所以我们定义一个联合体,该联合体占用两个字节空间。同时,在联合体中,我们定义多个不同的类型表达形式名称。这样当我们需要用到不同类型时,只需要如下操作:

//-----mian.c
#include "parameterSet.h"static parameterSetStruct parameterSet = {0};int main(void)
{parameterSet.setData.toByte[0] = 0x80;parameterSet.setData.toByte[1] = 0x01;if((parameterSet.setData.toDataU16 > parameterSet.minData.toDataU16) &&(parameterSet.setData.toDataU16 < parameterSet.maxData.toDataU16)){parameterSet.currentData.toDataU16 = parameterSet.setData.toDataU16;}
}

C语言之联合体通用变量类型之妙用相关推荐

  1. C语言学习笔记01:C语言基础语法_变量类型_类型转换

    文章目录 C语言第一天课程笔记 1. 内容安排 2. 课堂笔记 2.1 计算机硬件 2.2 计算机软件 2.3 编程语言和编译器 2.4 编程语言发展 2.5 C语言标准 2.6 C语言学习理由 2. ...

  2. c语言存储汉字的变量类型,C语言之变量存储类型与链接属性

    C语言中一个重要的东西就是弄清申明变量的类型.作用域.存储类型.链接属性等,例如是整型还是浮点型,存储于普通内存还是堆栈或者寄存器,作用于全局还是局部,能否被其他文件 引用等. 链接属性 申明变量或函 ...

  3. c语言中的数据变量类型,大小

    C中有哪些数据类型? 回答: 有两种类型的数据类型,用户定义和预定义.预定义的数据类型是int,char,float,double等,用户使用标签struct,union或enum创建用户定义的数据类 ...

  4. c语言 如何创建adt_C语言探索之旅 | 第二部分第六课:创建你自己的变量类型

    内容简介 前言 定义一个 struct 结构体的使用 结构体指针 union enum 总结 第二部分第七课预告 1. 前言 上一课是 C语言探索之旅 | 第二部分第五课:预处理 ,应该是比较轻松的. ...

  5. python 变量类型注释_变量类型、命名规则及代码注释

    人类在纸上可以写数字,也可以写文字,用数字来计算,用文字来说话,在人类的意识里你写的东西代表不同的含义!同样,在程序里面我们也按照人的习惯来设计,因此就有了变量类型这种说法!任何语言都会涉及到变量类型 ...

  6. C |格式化输出与变量类型

    C语言 格式化输出与变量类型   1.格式化输出 在PHP里面,我们一般都是用echo和var_dump以及print_r等来输出调试语句,在C语言中一般用printf来输出,不过由有点特殊,你需要在 ...

  7. long类型怎么转换成string_Python知识点-Python变量类型有哪些?

    Python的内置变量类型是非常基础的知识点,善用变量类型转换在日常的工作学习中会给我们带来非常大的帮助. 相对于其他语言,Python的变量类型既有自己的特色方法,也有借鉴前辈的优秀之处.今天酷仔整 ...

  8. 重命名变量类型名c语言,C语言命名规范-SEK-101022.doc

    C语言命名规范-SEK-101022,c语言命名规范,c语言变量命名规范,c语言函数命名规范,c语言变量命名规则,c语言标识符命名规则,c语言命名规则,c语言函数命名规则,c语言重命名文件,c语言变量 ...

  9. JAVA语言规范 JAVA SE 8 - 类型、值和变量

    JAVA语言规范 JAVA SE 8 - 类型.值和变量 类型和值的种类 简单类型和值 整数类型和值 整数操作 浮点数类型.格式和值 浮点数操作 boolean类型和布尔值 引用类型和值 对象 Obj ...

最新文章

  1. c java 的关系,c#与c、java的关系
  2. python使用imbalanced-learn的RandomOverSampler方法进行上采样处理数据不平衡问题
  3. virt-manager管理kvm
  4. 真机IOS8.3以上的文件夹共享
  5. NYOJ 600 花儿朵朵
  6. sql 数组_sql注入中级
  7. Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math 数学
  8. 投后管理岗面试_2020天津水务招79人,管理岗+操作岗,专科起报
  9. centos6.8 环境一键安装包 nginx配置thinkphp5
  10. 学生网页设计代码成品 大学生汽车网页代做 红旗汽车网页设计模板下载 HTML汽车网站制作 dreamweaver学生汽车网页设计成品
  11. 掘金翻译计划 GitHub Star 破3千--终于等到你
  12. 用Excel制作甘特图跟踪项目进度(附绘制教程)
  13. 关于需求确认的重要性
  14. 惠普服务器u盘启动找不到硬盘,U盘启动找不到硬盘怎么回事?
  15. fyi 在邮件里是什么意思_FYI的完整形式是什么?
  16. 计算机网络有什么部分组成,计算机网络有哪些组成部分和详细对比
  17. 测试用例需要包含哪些内容
  18. 天猫精灵服务器修改密码,天猫精灵怎么解绑 天猫精灵解绑账号方法
  19. Android权限设置 for Unity
  20. 离散-如何确定哈斯图极大极小元、最大最小元、最大最小上下界

热门文章

  1. 比特率 Kbps kbit/s 1KB/s Byte 的正确理解
  2. 为什么0x100是256个字节、0x400是1KB、0x800是2KB、0x1000是4KB?
  3. 朋友、心情与父子、亲情
  4. 软件实习项目2——贪吃喵(猫吃鱼版贪吃蛇)(代码实现)
  5. CocosCreator像素鸟小游戏实现(有源码)超详细教程 TS实现小游戏 零基础开发
  6. 基于BLE的IoT智能灯泡的安全漏洞利用
  7. 读书笔记014:《伤寒论》- 足厥阴肝经
  8. 大学计算机二级必考,计算机二级大学生必考吗
  9. 百度音乐全接口 API
  10. 关于kali连不上网络