列挙型

列挙型はいくつかのマクロ定数をまとめたようなもので、列挙型の変数はこのマクロ定数群のうちのどれかを値に取る・・・。

例えば、

enum TEST{
  TARO,
  JIRO,
  SABURO
};

enum Test test;

という感じで、TESTの定義とtestの宣言をした場合、testの値はTARO, JIRO, SABUROのどれかになる・・・。
実際には、TAROから順に0, 1, 2と整数が振られているだけ・・・。

性別を表すenum SEXは初期値が振られていないので、NONEが0, MALEが1, FEMALEが2・・・。
チーム番号を表すenum TEAMNOは、TEAMREDに10が振られている・・・。
そのあとは1ずつ増えるので、TEAMORANGEは11・・・。
TEAMBLUEは20が振られている・・・。もしこのあとに要素を追加すると、それは21になる・・・。

でuserのメンバではこのenum SEXとenum TEAMNOを使っている・・・。

user配列uを要素数3で用意し、それぞれに値をセット・・・。
enum変数の値にenum定数でセットできるが、出力するときは所詮整数なのでintで出力している・・・。
今回はやっていないが、struct同様、typedefでenumを省略したほうが面倒くさくなくていい・・・。

$ vi enum.c
$ gcc enum.c -o enum
$ ./enum
u[0].name = Taro
u[0].sex = 0
u[0].team_no = 10
u[1].name = Hanako
u[1].sex = 2
u[1].team_no = 11
u[2].name = Jiro
u[2].sex = 1
u[2].team_no = 20
$

こんな感じで出力される・・・。

Sample/enum.c at master · bg1bgst333/Sample · GitHub