union 联合体

本文通过一个实例展示了C语言中如何使用共用体(Union)来定义不同类型的数据结构,包括无符号字符、无符号短整型以及结构体。通过一个WORD_VAL类型的共用体,演示了成员变量之间的相互关系,如字节访问、位操作,并强调了共用体在同一时刻只能访问一个成员的特点。
摘要由CSDN通过智能技术生成

一、实例

typedef unsigned char           BYTE;                           /* 8-bit unsigned  */
typedef unsigned short int      WORD;                           /* 16-bit unsigned */
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]);   //0x34
    printf("temperature.v[1]    :0x%02X\r\n",temperature.v[1]);   //0x12
    printf("temperature.Val     :0x%02X\r\n",temperature.Val);    //0x1234 
    printf("temperature.byte.HB :0x%02X\r\n",temperature.byte.HB);//0x12
    printf("temperature.byte.LB :0x%02X\r\n",temperature.byte.LB);//0x34
    printf("temperature.bits.b13:%d\r\n",temperature.bits.b13);   //bit位
    return 0;
}

二、特点

  1. 共用体内部所有成员变量都存储在同一个内存地址
  2. 共用体成员变量同一时刻只能使用一个,否则会使值发生改变
  3. 共用体的长度等于成员中最长的数据类型长度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值