Union、サイズエンドバイトストレージ


unionの長さは最長メンバーの長さであり、最初のメンバーのみを初期化でき、他のメンバー値は、自身のタイプに応じて最初のメンバーから取得されます.
すなわちunion変数は最初のメンバーに基づいて格納でき,取得方法は多様である.
#include 

int main(int argc, char** argv){
    union {
        char a;
        int b;
    } s;

    s.b =0x02000001;
    if(s.a==2){
        printf("      %X
", (int)s.a); }else if(s.a==1){ printf(" %X
", (int)s.a); } return 0; }

s小端バイトシーケンスに格納:
ハイローアドレス0 xd 01 s.aの値はここで1バイトの記憶値をとるので、s.a=1
                  0xc    00
                  0xb    00
低アドレス0 xa 02
s大端サブシーケンスに格納:
ハイローアドレス0 xd 02 s.aの値はここで1バイトの記憶値をとるのでs.a=2
                  0xc    00
0 xb 00低アドレス0 xa 01