一、实例
typedef unsigned char BYTE;
typedef unsigned short int WORD;
typedef union
{
WORD Val;
BYTE v[2];
struct
{
BYTE LB;
BYTE HB;
} byte;
struct
{
BYTE b0:1;
BYTE b1:1;
BYTE b2:1;
BYTE b3:1;
BYTE b4:1;
BYTE b5:1;
BYTE b6:1;
BYTE b7:1;
BYTE b8:1;
BYTE b9:1;
BYTE b10:1;
BYTE b11:1;
BYTE b12:1;
BYTE b13:1;
BYTE b14:1;
BYTE b15:1;
} bits;
} WORD_VAL, WORD_BITS;
int main(void)
{
WORD_VAL temperature;
temperature.Val = 0X1234;
printf("temperature.v[0] :0x%02X\r\n",temperature.v[0]);
printf("temperature.v[1] :0x%02X\r\n",temperature.v[1]);
printf("temperature.Val :0x%02X\r\n",temperature.Val);
printf("temperature.byte.HB :0x%02X\r\n",temperature.byte.HB);
printf("temperature.byte.LB :0x%02X\r\n",temperature.byte.LB);
printf("temperature.bits.b13:%d\r\n",temperature.bits.b13);
return 0;
}
二、特点
- 共用体内部所有成员变量都存储在同一个内存地址
- 共用体成员变量同一时刻只能使用一个,否则会使值发生改变
- 共用体的长度等于成员中最长的数据类型长度