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,一经查实,立即删除!

相关文章

滚雪球学SpringCloud[5.2讲]: 配置的动态刷新与安全管理

全文目录: 前言5.2 配置的动态刷新与安全管理使用Spring Cloud Bus实现动态刷新动态刷新在多种场景中的应用Spring Cloud Bus的工作机制与架构分析核心架构: 示例:Spring Cloud Bus动态刷新配置1. 引入依赖2. 配置RabbitMQ3. 启用Bus功能4. 触…

ArrayList和Array有什么区别?

1.是什么 ArrayList和Array是Java编程语言中常用的两种数据结构,它们在多个方面存在显著的区别。下面详细解释这两种数据结构的区别,并通过例子进行说明。 一、空间大小与动态性 Array(数组): 空间大小是固定的&#x…

sql server 分区表查询

----查询是要指定的数据库下查询,否则查询不到信息 --查看是否是分区表 SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, * FROM sys.tables AS t JOIN sys.indexes AS i ON t.[object_id] i.[object_id] JOIN sys.partition_schemes ps ON i.data_s…

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编码,但…

android os 多用户介绍

AOSP (Android Open Source Project) 中的 multi-user 支持允许设备上存在多个用户账户,每个用户都有自己的环境、应用和数据。这种特性对于平板电脑或家庭娱乐设备尤其有用,因为它允许多个家庭成员或朋友共享同一设备而不互相干扰。 下面是一些与 AOSP…

react的事件绑定

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

Redis---关闭Redis服务端

简介 使用命令关闭Redis服务端。 命令 redis-cli -a 111111 -p 6370 shutdown参数解释: -a:Redis密码 -p:Redis端口 shutdown:关闭命令

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

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

【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攻击: …

从 “Hello, World!“ 到深入理解 print 函数与异常类型

一、Hello, World!:Python 编程的入门仪式 当我们开始学习任何一门编程语言时,几乎都会先接触到 "Hello, World!" 程序。它就像是一扇通往编程世界的大门,简单却意义非凡。在 Python 中,实现这个程序只需要一行代码&…

【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…