先頭へ戻る

共用体 解答ページ | Programming Place Plus C言語編 第55章

Programming Place Plus トップページ -- C言語編 -- 第55章

先頭へ戻る

問題①

問題① 「幅」と「高さ」のペアを、int型、あるいは float型で管理できるような共用体を作成してください。


次のようになります。

#include <stdio.h>

union Size_tag {
    struct {
        int w;
        int h;
    } i;
    struct {
        float w;
        float h;
    } f;
};

int main(void)
{
    union Size_tag s1 = { {10, 20} };
    union Size_tag s2;
    
    s2.f.w = 7.5f;
    s2.f.h = 9.5f;
    
    printf( "%d %d\n", s1.i.w, s1.i.h );
    printf( "%f %f\n", s2.f.w, s2.f.h );

    return 0;
}

実行結果

10 20
7.500000 9.500000

複数のメンバの組み合わせ (ここでは、幅と高さ)が複数(int型版と float型版)あり、同時に使うのが、いずれかの組み合わせだけであるのなら、メンバに構造体型の変数を持つ共用体を定義すればよいです。組み合わせの1つ1つを、個別の構造体の中にまとめている感覚です。


参考リンク


------------------------------------------------------------------------

更新履歴

'2018/5/21 練習問題を差し替え。元の問題の内容は、本編での解説に昇格した。

'2018/5/19 ビットフィールドの話題を、第56章へ移動。
章のタイトルを変更(「共用体とビットフィールド」->「共用体」)

'2018/5/7 新規作成。第50章から持ってきた。



第55章のメインページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー