概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C enum型
2006年10月07日 (土) | 編集 |
そろそろ涼しいを通り越して寒いと感じる季節になってきた。
未だに昼は暑いことあるのでYシャツがデフォルトだが。
こんなもんだっけ? 去年はもう少し涼しかった気がするんだがな。


前回名前だけ出たenum型について。

データの取り得る値をすべて列挙することによって定義される型だそうだ。
元々はPascalで使われていた型らしい。
enum型は、意味の希薄な数値データを意味のある定数名として割り付けることにより、プログラムを見易くする効果を期待出来るのだと。

…よく分からんな。

例を見てみよう。
たとえば、曜日を表現するデータとしてsun、mon、…sutを使いたい場合、

enum day {sun,mon,tue,wed,thu,fri,sat};

とenum day型を定義しておいて、

enum day a;

とするとenum day型の変数aが宣言出来るので、

if(a==sun){
 日曜日の処理
}


といったことが出来るようになるのだそうだ。文字列と何が違うんだこれ?
また、enum型のデータとして列挙されている名前(sun、mon…)はint型の値を持つ定数で、宣言されている順序で0、1、2…と順次割り当てられているので、

for(a=sun;a<=sat;a++){
 中略
}


といった表現も出来るらしい。int型の値というのがよく分からないが、やはりやってることは配列に似ているような気がする。

いまいちピンとこないので、例によって例題を見てみよう。
曜日のデータをsun…satで定義し、1週間の仕事を表示するプログラムを見てみる。


enum day {sun,mon,tue,wed,thu,fri,sat};

void work(enum day a)
{
 switch(a){
  case sun:printf("市場へ出掛け糸と麻を買ってきた\n");
  break;
  case mon:printf("お風呂を焚いた\n");
  break;
  case tue:printf("お風呂に入る\n");
  break;
  case wed:printf("友達が来た\n");
  break;
  case thu:printf("友達を送った\n");
  break;
  case fri:printf("糸巻きなんてやってられない\n");
  break;
  case sat:printf("おしゃべりに終始\n");
  break;
 }
}

void main(void)
{
 enum day a;
 for(a=sun;a<=sat;a++)
  work(a);
}


enum_test.jpg
こんな感じ

だがこの例だとやはり配列でもいいような…?
見て直感的に分かり易いってのが重要なのかねー?


まとめ。

まだよく分からん

知っていれば便利な機能ってところなんだろうか。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。