C语言之联合体通用变量类型之妙用
当我们用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语言之联合体通用变量类型之妙用相关推荐
- C语言学习笔记01:C语言基础语法_变量类型_类型转换
文章目录 C语言第一天课程笔记 1. 内容安排 2. 课堂笔记 2.1 计算机硬件 2.2 计算机软件 2.3 编程语言和编译器 2.4 编程语言发展 2.5 C语言标准 2.6 C语言学习理由 2. ...
- c语言存储汉字的变量类型,C语言之变量存储类型与链接属性
C语言中一个重要的东西就是弄清申明变量的类型.作用域.存储类型.链接属性等,例如是整型还是浮点型,存储于普通内存还是堆栈或者寄存器,作用于全局还是局部,能否被其他文件 引用等. 链接属性 申明变量或函 ...
- c语言中的数据变量类型,大小
C中有哪些数据类型? 回答: 有两种类型的数据类型,用户定义和预定义.预定义的数据类型是int,char,float,double等,用户使用标签struct,union或enum创建用户定义的数据类 ...
- c语言 如何创建adt_C语言探索之旅 | 第二部分第六课:创建你自己的变量类型
内容简介 前言 定义一个 struct 结构体的使用 结构体指针 union enum 总结 第二部分第七课预告 1. 前言 上一课是 C语言探索之旅 | 第二部分第五课:预处理 ,应该是比较轻松的. ...
- python 变量类型注释_变量类型、命名规则及代码注释
人类在纸上可以写数字,也可以写文字,用数字来计算,用文字来说话,在人类的意识里你写的东西代表不同的含义!同样,在程序里面我们也按照人的习惯来设计,因此就有了变量类型这种说法!任何语言都会涉及到变量类型 ...
- C |格式化输出与变量类型
C语言 格式化输出与变量类型 1.格式化输出 在PHP里面,我们一般都是用echo和var_dump以及print_r等来输出调试语句,在C语言中一般用printf来输出,不过由有点特殊,你需要在 ...
- long类型怎么转换成string_Python知识点-Python变量类型有哪些?
Python的内置变量类型是非常基础的知识点,善用变量类型转换在日常的工作学习中会给我们带来非常大的帮助. 相对于其他语言,Python的变量类型既有自己的特色方法,也有借鉴前辈的优秀之处.今天酷仔整 ...
- 重命名变量类型名c语言,C语言命名规范-SEK-101022.doc
C语言命名规范-SEK-101022,c语言命名规范,c语言变量命名规范,c语言函数命名规范,c语言变量命名规则,c语言标识符命名规则,c语言命名规则,c语言函数命名规则,c语言重命名文件,c语言变量 ...
- JAVA语言规范 JAVA SE 8 - 类型、值和变量
JAVA语言规范 JAVA SE 8 - 类型.值和变量 类型和值的种类 简单类型和值 整数类型和值 整数操作 浮点数类型.格式和值 浮点数操作 boolean类型和布尔值 引用类型和值 对象 Obj ...
最新文章
- c java 的关系,c#与c、java的关系
- python使用imbalanced-learn的RandomOverSampler方法进行上采样处理数据不平衡问题
- virt-manager管理kvm
- 真机IOS8.3以上的文件夹共享
- NYOJ 600 花儿朵朵
- sql 数组_sql注入中级
- Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math 数学
- 投后管理岗面试_2020天津水务招79人,管理岗+操作岗,专科起报
- centos6.8 环境一键安装包 nginx配置thinkphp5
- 学生网页设计代码成品 大学生汽车网页代做 红旗汽车网页设计模板下载 HTML汽车网站制作 dreamweaver学生汽车网页设计成品
- 掘金翻译计划 GitHub Star 破3千--终于等到你
- 用Excel制作甘特图跟踪项目进度(附绘制教程)
- 关于需求确认的重要性
- 惠普服务器u盘启动找不到硬盘,U盘启动找不到硬盘怎么回事?
- fyi 在邮件里是什么意思_FYI的完整形式是什么?
- 计算机网络有什么部分组成,计算机网络有哪些组成部分和详细对比
- 测试用例需要包含哪些内容
- 天猫精灵服务器修改密码,天猫精灵怎么解绑 天猫精灵解绑账号方法
- Android权限设置 for Unity
- 离散-如何确定哈斯图极大极小元、最大最小元、最大最小上下界