20131110【C言語】ビットフィールドを持つ構造体を共用体のメンバで使う

お題

ビットフィールドを持つ構造体を共用体のメンバで使う

 

プログラム概要

文字を入力させ、それをビットで出力する

 

ソース

#include <stdio.h>

 

struct sample {

unsigned a: 1;

unsigned b: 1;

unsigned c: 1;

unsigned d: 1;

unsigned e: 1;

unsigned f: 1;

unsigned g: 1;

unsigned h: 1;

};

 

union key_type {

char ch;

struct sample bits;

} key;

 

int main(void)

{

printf("Please input key: ");

key.ch = getchar();

printf("Binary code: ");

 

if (key.bits.h)

printf("1 ");

else

printf("0 ");

    if (key.bits.g)

        printf("1 ");

    else

        printf("0 ");

    if (key.bits.f)

        printf("1 ");

    else

        printf("0 ");

    if (key.bits.e)

        printf("1 ");

    else

        printf("0 ");

    if (key.bits.d)

        printf("1 ");

    else

        printf("0 ");

    if (key.bits.c)

        printf("1 ");

    else

        printf("0 ");

    if (key.bits.b)

        printf("1 ");

    else

        printf("0 ");

    if (key.bits.a)

        printf("1 ");

    else

        printf("0 ");

 

return 0;

}

 

実行結果

Please input key: X

Binary code: 0 1 0 1 1 0 0 0