当前位置: 首页 > news >正文

union的特性和大小端

一、union在c和c++语言中的特性

1.共享内存空间:union的所有成员共享同一块内存空间。意味着在同一时刻,union 只能存储其成员 中的一个值。当你修改了union中的一个成员,那么其它成员的值也会被改变,因为它们实际上都是指向同一块内存区域的不同解释。

2.大小由其最大成员决定:union的大小至少等于其最大成员的大小。编译器会确保 union 有足够的空间来存储其最大成员,但也可能为对齐而增加额外的填充字节。

二、大小端:描述了多字节数据(如整数、浮点数等)在内存中的字节排列方式。

1.大端:将数据的最高有效字节存储在内存的最低地址处,而将最低有效字节存储在内存的最高地址处。

2.小端:将数据的最低有效字节存储在内存的最低地址处,而将数据的最高有效字节存储在内存的最高地址处。

以下是一个使用联合体检测大小端的示例代码:

#include <stdio.h>int main()
{union{int i;char c[sizeof(int)];} u;u.i = 0x12345678;if (u.c[0] == 0x12 && u.c[1] == 0x34 && u.c[2] == 0x56 && u.c[3] == 0x78){printf("大端模式");}else if (u.c[0] == 0x78 && u.c[1] == 0x56 && u.c[2] == 0x34 && u.c[3] == 0x12){printf("小端模式");}else{printf("未知大小端");}printf("\n");return 0;
}

输出:

在这段代码中,定义了一个联合体u,它包含一个整型变量i和一个字符数组c。通过将整型变量i赋值为0x12345678,然后检查字符数组c中各个元素的值,可以判断当前计算机是大端模式还是小端模式。

http://www.lryc.cn/news/405967.html

相关文章:

  • 个性化IT服务探索实践
  • UE4-打包游戏,游戏模式,默认关卡
  • Unity ShaderLab基础
  • 用代理IP会频繁掉线是什么原因?HTTP和SOCKS5协议优劣势是什么?
  • MongoDB教程(十三):MongoDB覆盖索引
  • 快速认识EA(Enterprise Architecture)
  • 词云图制作
  • AndroidStudio与手机进行无线调试
  • 脉冲编码调制(PCM,Pulse Code Modulation)简介
  • Pytorch transforms 的研究
  • 一个C++模板工厂的编译问题的解决。针对第三方库的构造函数以及追加了的对象构造函数。牵扯到重载、特化等
  • 《昇思 25 天学习打卡营第 20 天 | Pix2Pix实现图像转换 》
  • 关于c#的简单应用三题
  • (十三)Spring教程——依赖注入之工厂方法注入
  • Redission中的Lua脚本写法、理解
  • 视频共享融合赋能平台LntonCVS视频监控管理平台视频云解决方案
  • GraphRAG + GPT-4o mini 低成本构建 AI 图谱知识库
  • 全国区块链职业技能大赛第十套区块链产品需求分析与方案设计
  • 分布式Apollo配置中心搭建实战
  • Android monkey命令和monkey脚本详解
  • vue 实现对图片的某个区域点选, 并在该区域上方显示该部分内容
  • 配置文件格式 INI 快速上手
  • 基于WebGoat平台的SQL注入攻击
  • SpringMvc有几个上下文
  • k8s部署rabbitmq集群
  • Python利用包pypinyin汉字转拼音(处理多音字)
  • 推荐系统三十六式学习笔记:工程篇.常见架构24|典型的信息流架构是什么样的
  • 解决QEMU无法从非0x80000000处开始执行
  • AI在候选人评估中的作用:精准筛选与HR决策的助力
  • 自动化测试的艺术:Xcode中GUI测试的全面指南