列挙体(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);
}
補足
回答ありがとうございます。 breakに ついては理解しました。 return 0;ですが 関数で戻り値が必要ない場合は 単純に return; とすればいいんでしょうか?