- ベストアンサー
列挙体(enum)と関数教えてください。
下記、勉強中の本から抜粋したものです。 main関数の中のenum animal selected;が呼び出されたあと、 どのように読んで?進んでいったらよいのでしょうか? enum(列挙体)のenum animal { Dog, Cat, Monkey, Invalid };が 0,1,2,3,の働きをするということは、enum animal select(void)関数 に続くということでしょうか? 本の中に、enum animalが型名、 selectedが変数の宣言となってることも わかりません。ただmain関数で宣言しているだけなのでしょうか? switch文の中の (selected = select())もどういう意味なのでしょうか? enum(列挙体)とenum animal select(void)関数の関係や、 main関数の中のenum animal selected;、 switch文の中の (selected = select())などの説明していただける方 教えてください。よろしくお願いします。 #include <stdio.h> enum animal { Dog, Cat, Monkey, Invalid }; void dog(void) { puts("ワンワン!!"); } void cat(void) { puts("ニャ~オ!!"); } void monkey(void) { puts("キッキッ!!"); } enum animal select(void) { int tmp; do { printf("0…犬 1…猫 2…猿 3…終了:"); scanf("%d", &tmp); } while (tmp < Dog || tmp > Invalid); return (tmp); } int main(void) { enum animal selected; do { switch (selected = select()) { case Dog : dog(); break; case Cat : cat(); break; case Monkey: monkey();break; } } while (selected != Invalid); return (0); }
- みんなの回答 (2)
- 専門家の回答
お礼
回答ありがとうございます。 { Dog, Cat, Monkey, Invalid }のどれかの値が入る selected という変数を宣言をしたという部分と、 selected = select()について書いてくださり、 とてもわかりやすかったです。 selectedも0,1,2,3のどれかを表し、 select(void)関数の戻り値(0,1,2,3) とイコールの結果でswitch文に行くのですね。 よくわかりました。