列挙型はいくつかのマクロ定数をまとめたようなもので、列挙型の変数はこのマクロ定数群のうちのどれかを値に取る・・・。
例えば、
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 $
こんな感じで出力される・・・。