union 的两个用处

时间:2023-11-10 09:23:20

1 节约内存:

这一功能可以参考我的其它博文:

https://i.cnblogs.com/EditPosts.aspx?postid=8545190&update=1

2 测试机器大小端:

大端:高字节存在低地址(高在前);

小段:高字节在高地址(高在后);

union的一特性在于所有的成员共享一段内存;

上代码:

 // TemplateExe1.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include "atlstr.h"
using namespace std;
union Num
{
int a;
unsigned char b; }uNum;
CString CheckCpu()
{
uNum.a = 0x00000001;
return(uNum.b == ? "小端" : "大端");
}
void main()
{ printf("%s",CheckCpu());
getchar();
}

a=0x00000001;

高位0,低位1:

如果高位(0)在低地址,则是大端;低位(1)在低地址,则是小端;

一个union类型,而unsigned char b只占一个字节,要么为:0x00,要么是0x01。

说明:uNum.a=1;只是一种情况,只要a的32bit中,最高位和最低位不一致即可