union存取低高位
联合体类型,变量成员共用同一内存,同一时刻只能保存一个成员的数据。
以1个4字节数据,传递r\g\b为例
#include<stdint.h> #include<iostream> int main() { uint32_t myV; //用于模拟值传递 //写 { union { struct { uint32_t r : 8; //注意与“要传递的值”同类型,防止新开辟1个字节造成的位不连续 uint32_t g : 8; uint32_t b : 8; }_s; uint32_t v = 0; //要传递的值 }_u; _u._s.r = 120; _u._s.g = 130; _u._s.b = 140; std::cout << _u.v << std::endl; myV = _u.v; } //读 { union { struct { uint32_t myR : 8; uint32_t myG : 8; uint32_t myB : 8; }myS; uint32_t rgb = 0; }myU; //模拟值传递 myU.rgb = myV; //获取r\g\b unsigned char r1 = myU.myS.myR; unsigned char g1 = myU.myS.myG; unsigned char b1 = myU.myS.myB; std::cout << (int)r1 << " " << (int)g1 << " " << (int)b1 << std::endl; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2019-05-23 11、LineEdit与setCompleter自动补全
2019-05-23 10、堆叠窗口StackedWidget
2019-05-23 9、消息对话框、文件对话框