位域特点:可以按位来定义变量
联合特点:联合内的变量公用一段存储空间,可以将两个变量连锁在一起
通过以下代码实践一下
#include <iostream>
typedef struct {
uint8_t x:4; //4bits
uint8_t y:4; //4bits
uint8_t z; //8bits
uint16_t w; //16bits
}mmm;
//结构体一共32bits
typedef union {
uint32_t a;
mmm b;
}nnn;
//联合内部有一个32位的变量a,而mmm也是32位的变量,两者共享内存,可以实现连锁
int main(int argc, char *argv[])
{
nnn data = {0};
data.b.x+=3;
data.b.y+=3;
data.b.z+=4;
data.b.w+=4;
std::cout << std::hex << data.a <<std::endl;
// 打印16进制可以得到a为 40433
return EXIT_SUCCESS;
}