2018年4月6日金曜日

開発環境

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

コードマグネット(p. 256)

Makefile

CC = cc

all: run

sample: sample.c
 $(CC) sample.c -o sample

run: sample
 ./sample
#include <stdio.h>

typedef enum {
  COUNT,
  POUNDS,
  PINTS
} UnitOfMeasure;

typedef union {
  short count;
  float weight;
  float volume;
} Quantity;

typedef struct {
  const char *name;
  const char *country;
  Quantity amount;
  UnitOfMeasure units;
} FruitOrder;

void display(FruitOrder order) {
  printf("この注文に含まれるものは");
  switch(order.units) {
  case PINTS:
    printf("%2.2fパイントの", order.amount.volume);
    break;
  case POUNDS:
    printf("%2.2fポンドの", order.amount.weight);
    break;
  case COUNT:
    printf("%i個の", order.amount.count);
    break;
  }
  printf("%sです。\n", order.name);
}
int main() {
  FruitOrder apples =
    {"リンゴ", "イギリス", .amount.count=144, COUNT};
  FruitOrder strawberries =
    {"いちご", "スペイン", .amount.weight=17.6, POUNDS};
  FruitOrder oj =
    {"オレンジジュース", "アメリカ", .amount.volume=10.5, PINTS};

  FruitOrder orders[] = {apples, strawberries, oj};
  for (int i = 0; i < 3; i++) {
    display(orders[i]);
  }
}

入出力結果(Terminal)

$ make
cc sample.c -o sample
./sample
この注文に含まれるものは144個のリンゴです。
この注文に含まれるものは17.60ポンドのいちごです。
この注文に含まれるものは10.50パイントのオレンジジュースです。
$

0 コメント:

コメントを投稿