UNION嵌套STRUCT的两种类型

1. STRUCT里面的总长度大于UNION中的最大长度

        在UNION类型中,嵌套如STRUCT类型,其中STRUCT的类型还比UNION类型中最大的类型的长度还长的时候,会如何处理呢,看下面示例

程序源码

#include "stdafx.h"typedef unsigned long ULONG;
typedef unsigned char UCHAR;
typedef void *HANDLE;typedef struct
{ULONG f_data1;UCHAR f_data2;union{ULONG s_data1;UCHAR s_data2;struct{ULONG           s_Value1;			ULONG           s_Value2;		}data_second;}u;
}DATA_FIRST;int _tmain(int argc, _TCHAR* argv[])
{DATA_FIRST  d1;d1.f_data1 = 0x11111111;d1.f_data2 = 0x23;d1.u.s_data1 = 0x44444444;d1.u.s_data2 = 0x56;d1.u.data_second.s_Value1 = 0x789a;d1.u.data_second.s_Value2 = 0x88888888;printf("Print data: \n");printf("\t	d1.f_data1 = 0x%X \n", d1.f_data1);printf("\t	d1.f_data2 = 0x%X \n", d1.f_data2);printf("\t	d1.u.s_data1 = 0x%X \n", d1.u.s_data1);printf("\t	d1.u.s_data2 = 0x%X \n", d1.u.s_data2);printf("\t	d1.u.data_second.s_Value1 = 0x%X \n", d1.u.data_second.s_Value1);printf("\t	d1.u.data_second.s_Value2 = 0x%X \n", d1.u.data_second.s_Value2);return 0;
}

运行结果

源码分析

2. TRUCT里面的总长度小于等于UNION中的最大长度

        在UNION类型中,嵌套如STRUCT类型,其中STRUCT的类型比UNION类型中最大的类型的长度还小时候,会如何处理呢,看下面示例

程序源码


#include "stdafx.h"typedef unsigned long ULONG;
typedef unsigned char UCHAR;
typedef void *HANDLE;typedef struct
{ULONG data1;union{ULONG data2;UCHAR data3;struct{ULONG           value1: 4;ULONG           value2 : 4;ULONG           value3 : 4;ULONG           value4 : 4;ULONG           value5 : 4;ULONG           value6 : 4;ULONG           value7 : 4;ULONG           value8 : 4;}value;}u;
}DATA_FIRST;int _tmain(int argc, _TCHAR* argv[])
{DATA_FIRST  d;d.data1 = 0x11112222;d.u.data2 = 0x22334455;d.u.data3 = 0xaa;d.u.value.value5 = 0xb;printf("Print data: \n");printf("\t	d.data1 = 0x%X \n", d.data1);printf("\t	d.u.data2 = 0x%X \n", d.u.data2);printf("\t	d.u.data3 = 0x%X \n", d.u.data3);printf("\t	d.u.value.value1 = 0x%X \n", d.u.value.value1);printf("\t	d.u.value.value2 = 0x%X \n", d.u.value.value2);printf("\t	d.u.value.value3 = 0x%X \n", d.u.value.value3);printf("\t	d.u.value.value4 = 0x%X \n", d.u.value.value4);printf("\t	d.u.value.value5 = 0x%X \n", d.u.value.value5);printf("\t	d.u.value.value6 = 0x%X \n", d.u.value.value6);printf("\t	d.u.value.value7 = 0x%X \n", d.u.value.value7);printf("\t	d.u.value.value8 = 0x%X \n", d.u.value.value8);return 0;
}

运行结果:

源码分析:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/54337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

103.WEB渗透测试-信息收集-FOFA语法(3)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:102.WEB渗透测试-信息收集-FOFA语法(2) FOFA使用实例 组件框架 …

DAY20信息打点-红蓝队自动化项目资产侦察武器库部署企查产权网络空间

2.自动化-网络空间-AsamF 1.去GitHub上下载项目之后使用CMD打开 2.输入命令AsamF_windows_amd64.exe -v生成配置文件 3.AsamF会在~/.config/asamf/目录下生成config.json文件 C:\Users\Acer\.config\asamf 5.根据文档输入命令去查询所需信息(已经没有用了&#x…

LabVIEW多语言支持优化

遇到的LabVIEW多语言支持问题,特别是德文显示乱码以及系统区域设置导致的异常,可能是由编码问题或区域设置不匹配引起的。以下是一些可能的原因及解决方案: 问题原因: 编码问题:LabVIEW内部使用UTF-8编码,但…

react的事件绑定

文章目录 基本示例使用箭头函数事件对象阻止默认行为绑定事件处理函数的上下文 在 React 中,事件绑定主要通过 JSX 属性来实现。事件处理函数被传递给相应的事件属性,例如 onClick、onChange 等。这些属性会被绑定到 HTML 元素上,并在事件发生…

大白话解读末日期权是什么意思?末日期权与黑天鹅!

今天带你了解大白话解读末日期权是什么意思?末日期权与黑天鹅!末日期权与黑天鹅事件的关系主要体现在风险和波动性管理上,交易者需要谨慎对待这两者的互动。 末日期权和期权黑天鹅事件之间的关系主要体现在风险管理和市场波动性上。 末日期…

【SA8155P】AIS Camera相关内容的简单介绍

高通车载相机模块(AIS,Automotive lmage System)是专门针对车载系统特性而设计的一套车载视觉架构,可用于AVM、RVC、DMS等常见车载视频应用开发。车载Camera系统的图像大部分是给自动驾驶等使用,更多考虑的是远距离传输、多摄像头图像处理等场景。 本文仅对AIS Camera相关…

2024考研数学真题解析-数二:

第一类间断点:可去间断点,跳跃间断点。 幂指函数x的取值范围是x>0。 接着分母不能为0推出x1,x2是间断点,由幂指函数x>0可知,x0也是间断点。 先求x0处的极限,这里没有必要求0左右两边的极限&#xff0…

百元头戴式耳机都有哪些?五大精品独家推荐!

在当今市场中,耳机已经成为我们生活中不可或缺的电子设备之一。而对于追求性价比的朋友来说,如何在百元价位内挑选到一款音质出色、舒适耐用的头戴式耳机,无疑是一大难题。百元头戴式耳机都有哪些?为了帮助大家在琳琅满目的产品中…

Linux之CentOS 7.9-Minimal部署Oracle 11g r2 安装实测验证(桌面模式)

前言: 发个之前的库存… Linux之CentOS 7.9-Minimal部署Oracle 11g r2 安装实测验证(桌面模式) 本次验证的是CentOS_7_Minimal-2009桌面模式来部署Oracle 11g r2,大家可根据自身环境及学习来了解。 环境:下载地址都给你们超链好了 1、Linux系统镜像包: 1.1 CentOS-7-x86_…

嵌入式AI---如何用C++实现YOLO的NMS(非极大值抑制)算法

文章目录 前言一、为什么需要NMS算法?二、什么是NMS算法?三、如何使用C编写一个NMS算法1、预测框定义2、滤除无效框 总结 前言 YOLO系列的目标检测算法在边缘部署方面展现出了强大的性能和广泛的应用潜力。大部分业务场景是利用PyTorch在服务器端完成检…

【网络安全】-ssrf服务器请求伪造攻击-burp

SSRF攻击服务器请求伪造攻击 CSRF攻击跨站请求伪造攻击也称客户端请求伪造攻击 两种攻击最主要的区别是一个在服务器,一个在客户端。 文章目录 前言 什么是SSRF攻击? 1.分类: 针对服务器的 SSRF 攻击: 针对后端系统的SSRF攻击: …

【Echarts】vue3打开echarts的正确方式

ECharts 是一个功能强大、灵活易用的数据可视化工具,适用于商业报表、数据分析、科研教育等多种场景。那么该如何优雅的使用Echarts呢? 这里以vue3为例。 安装echarts pnpm i echarts封装公用方法 // ts-nocheck import * as echarts from echarts; // 我们这里借…

Linux系统应用之知识补充——OpenEuler(欧拉)的安装和基础配置

前言 这篇文章将会对OpenEuler的安装进行详解,一步一步跟着走下去就可以成功 注意 :以下的指令操作最好在root权限下进行(即su - root) ☀️工贵其久,业贵其专! 1、OpenEuler的安装 这里我不过多介绍&a…

相亲交友系统 现代爱情的导航仪

在这个数字化的时代,人们的生活方式发生了翻天覆地的变化,其中最显著的变化之一便是交友方式的转变。编辑h17711347205随着社会节奏的加快,越来越多的人选择通过相亲交友系统来寻找人生伴侣。相亲交友系统不仅简化了传统的交友流程&#xff0…

Java设计模式——工厂方法模式(完整详解,附有代码+案例)

文章目录 5.3 工厂方法模式5.3.1概述5.3.2 结构5.3.3 实现 5.3 工厂方法模式 针对5.2.3中的缺点,使用工厂方法模式就可以完美的解决,完全遵循开闭原则。 5.3.1概述 工厂方法模式:定义一个创建对象的接口(这里的接口指的是工厂&…

第一次安装Pytorch

1、新版本的Anaconda内置的python版本是3.12, 目前 Windows 上的 PyTorch 仅支持 Python 3.8-3.11;不支持 Python 2.x。 1、创建运行环境 在不创建虚拟环境的情况下,不建议使用最新的Python和Anaconda。 在几次失败后,我使用的是Anaconda3-2…

微服务保护学习笔记(五)Sentinel授权规则、获取origin、自定义异常结果、规则持久化

文章目录 前言4 授权规则4.1 基本原理4.2 获取origin4.3 配置授权规则 5 自定义异常结果6 规则持久化 前言 微服务保护学习笔记(一)雪崩问题及解决方案、Sentinel介绍与安装 微服务保护学习笔记(二)簇点链路、流控操作、流控模式(关联、链路) 微服务保护学习笔记(三)流控效果(…

力扣 2529.正整数和负整数的最大计数

文章目录 题目介绍解法 题目介绍 解法 采用红蓝染色体法,具体介绍参考 红蓝染色体法 通过红蓝染色体法可以找到第一个大于大于target的位置,使所以本题可以找第一个大于0的位置,即负整数的个数;数组长度 - 第一个大于1的位置即正…

什么品牌超声波清洗机质量好?四大绝佳超声波清洗机品牌推荐!

在快节奏的现代生活中,个人物品的清洁卫生显得至关重要。眼镜、珠宝饰品、手表乃至日常餐厨用具,这些频繁接触的物品极易累积污渍与细菌。拿眼镜为例,缺乏定期清洁会让油渍与尘埃积累,进而成为细菌的温床,靠近眼睛使用…

2024最新版,人大赵鑫老师《大语言模型》新书pdf分享

本书主要面向希望系统学习大语言模型技术的读者,将重点突出核心概念与 算法,并且配以示例与代码(伪代码)帮助读者理解特定算法的实现逻辑。由于大语言模型技术的快速更迭,本书无法覆盖所有相关内容,旨在梳理…