//
// main.cpp
// C++Test23
//
#include <iostream>
#include <math.h>
using namespace std;
union A {
int i;
char c[2];
};
bool IsBigEndian() {
int a = 0x1234;
char b = *(char *)&a;//通过将int强制类型转换成char单字节,通过判断起始存储位置。即等于 取b等于a的低地址部分
return b == 0x12 ? true: false;
}
int main(int argc, const char *argv[]) {
//我们知道联合体内的数据类型是共享内存的。也就是说这个A 其实就占用四个字节,
//第一个字节 第二个字节 第三个字节 第四个字节
//0000,0000 0000,0000 0000,0001 0000,0010
// c[1] c[0]
cout << sizeof(A) << endl;
A a;
a.c[0] = 10;
// a.c[0] = 0x0010 -6;
cout << (0x0010 -6) << endl;
cout << pow(2, 8) << endl;
// a.c[0] = pow(2, 8)-1;
a.c[1] = 1;
cout << a.i << endl;
cout << IsBigEndian() << endl;
return 0;
}
Union的内存模型-大端模式和小段模式
最新推荐文章于 2022-06-22 21:11:40 发布