union 的两个用处

1 节约内存:

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

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

2 测试机器大小端:

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

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

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

上代码:

 1 // TemplateExe1.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include <iostream>
 6 #include "atlstr.h"
 7 using namespace std;
 8 union Num
 9 {
10     int a;
11     unsigned char b;
12 
13 }uNum;
14 CString CheckCpu()
15 {
16     uNum.a = 0x00000001;
17     return(uNum.b == 1 ? "小" : "大");
18 }
19 void main()
20 {
21     
22     printf("%s",CheckCpu());
23     getchar();
24 }

a=0x00000001;

高位0,低位1:

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

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

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

posted on 2018-03-11 20:39  我是某某某是我  阅读(334)  评论(0编辑  收藏  举报

导航