開発環境
- OS: macOS High Sierra - Apple
- Text Editor: Emacs
- コンパイラー: LLVM/Clang, GCC(gcc)
- プログラミング言語: C
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 コメント:
コメントを投稿