2018年2月8日木曜日

開発環境

Head First C ―頭とからだで覚えるCの基本 (David Griffiths (著)、Dawn Griffiths (著)、中田 秀基 (監修)、木下 哲也 (翻訳)、オライリージャパン)の5章(構造体、共用体、ビットフィールド - 独自の構造を使う)、混乱したミキサー(p. 250)、コンパイラになってみよう(p. 251)を取り組んでみる。

混乱したミキサー(p. 250)、コンパイラになってみよう(p. 251)

//
//  main.c
//  sample1
//
//  Created by kamimura on 2018/02/03.
//  Copyright © 2018 kamimura. All rights reserved.
//

#include <stdio.h>

typedef struct{
    float tequila;
    float cointreau;
    union {
        float lemon;
        int lime_pieces;
    } citrus;
} Margarita;

void p1(Margarita m) {
    printf("%2.1f単位のテキーラ\n"
           "%2.1f単位のコアントロー\n"
           "%2.1f単位のジュース\n",
           m.tequila, m.cointreau, m.citrus.lemon);
}
void p2(Margarita m) {
    printf("%2.1f単位のテキーラ\n"
           "%2.1f単位のコアントロー\n"
           "%i切れのライム\n",
           m.tequila, m.cointreau, m.citrus.lime_pieces);
}
int main() {
    // 上から順に
    Margarita m1 = {2.0, 1.0, .citrus.lemon=2};
    p1(m1);
    
    Margarita m2 = {2.0, 1.0, {0.5}};
    p1(m2);
    
    Margarita m3 = {2.0, 1.0, {.lime_pieces=1}};
    p2(m3);
    
    // コンパイラになってみよう
    Margarita m4;
    m4 = (Margarita){2.0, 1.0, {0.5}};
    p1(m4);
    
    return 0;
}

入出力結果(Terminal)

2.0単位のテキーラ
1.0単位のコアントロー
2.0単位のジュース
2.0単位のテキーラ
1.0単位のコアントロー
0.5単位のジュース
2.0単位のテキーラ
1.0単位のコアントロー
1切れのライム
2.0単位のテキーラ
1.0単位のコアントロー
0.5単位のジュース
Program ended with exit code: 0

0 コメント:

コメントを投稿