C言語 union 共用体とは?

今回は、共用体について説明していきます。

#include <stdio.h>

/* 共用体のdataを宣言 */
union data{
      unsigned int ui;
      unsigned short us;
      unsigned char uc;
};

void main(void) {
      union data d;

      d.ui = 0x12345678;

      printf("0x%x\n", d.ui); // 出力=0x12345678
      printf("0x%x\n", d.us); // 出力=0x5678
      printf("0x%x\n", d.uc); // 出力=0x78

}

共用体を宣言しています。

/* 共用体のdataを宣言 */
union data{
      unsigned int ui;
      unsigned short us;
      unsigned char uc;
};

共用体は、共用体内で宣言されたデータ領域を共有します。

この場合は、unsigned int で4バイト確保し、unsigned short は、
unsigned int の下位2バイトに割り当てられ、unsigned charは、
unsigned int の下位1バイトに割り当てられる事になります。

共用体は、普通のプログラミングに使う機会は少なく、
特殊な用途として用いられます。