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

トップページ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);
}

実行結果

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 でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る