#include <stdio.h>
union data{
unsigned char u8_all;//u8
unsigned short u16_all;//u16
struct
{
unsigned a1: 1; // bit0
unsigned a2: 1; // bit1
unsigned a3: 1; // bit2
unsigned a4: 1; // bit3
unsigned a5: 1; // bit4
unsigned a6: 1; // bit5
unsigned a7: 1; // bit6
unsigned a8: 1; // bit7
} bit;
struct
{
unsigned char byte0: 8;
unsigned char byte1: 8;
} word;
};
static union data reg_data;
int main()
{
reg_data.u16_all = 0xAABB;
printf("%x %x %x\n", reg_data.u8_all, reg_data.u16_all, reg_data.word.byte0);
reg_data.bit.a1 = 0;
reg_data.bit.a2 = 0;
reg_data.bit.a3 = 1;
reg_data.bit.a4 = 1;
reg_data.bit.a5 = 0;
reg_data.bit.a6 = 0;
reg_data.bit.a7 = 1;
reg_data.bit.a8 = 1;
printf("%x %x %x\n", reg_data.u8_all, reg_data.u16_all, reg_data.word.byte0);
reg_data.word.byte0 = 0xaa;
printf("%x %x %x\n", reg_data.u8_all, reg_data.u16_all, reg_data.word.byte0);
reg_data.word.byte1 = 0xdd;
printf("%x %x %x\n", reg_data.u8_all, reg_data.u16_all, reg_data.word.byte0);
return 0;
}
结构体变量位域使用技巧
最新推荐文章于 2021-08-04 10:58:04 发布