union 共用体,又称联合体
例子:
#include <iostream>
typedef struct {
uint8_t aa : 8;
uint8_t bb : 8;
uint8_t cc : 4;
uint8_t dd : 4;
uint8_t ee : 2;
uint8_t ff : 3;
uint8_t gg : 3;
} J_AEB;
typedef union {
uint8_t data[5];
J_AEB J_test;
} J_Uon;
int main() {
J_Uon test_uon;
test_uon.data[0] = 255;
test_uon.data[1] = 255;
test_uon.data[2] = 255;
test_uon.data[3] = 255;
test_uon.data[4] = 255;//共用体未被覆盖的值
int len = sizeof(test_uon.data);
test_uon.J_test.aa = 0;
test_uon.J_test.bb = 0;
test_uon.J_test.cc = 0;
test_uon.J_test.dd = 255;//只取后4个字节
test_uon.J_test.ee = 255;
test_uon.J_test.ff = 0;
test_uon.J_test.gg = 255;
std::cout << "Hello World!\n";
std::cout << "len: "<<len<<std::endl;
for(int i = 0; i < len; i++)
{
std::cout<< std::hex<< int(test_uon.data[i])<<std::endl;
}
std::cout << "Hello END!\n";
}
运行结果:
Hello World!
len: 5
0
0
f0
e3
ff
Hello END!