第46章 列挙型データ  


今回は、「列挙型」についてします。今回も簡単です。 列挙型は別名enum(エナム)型ともよばれます。 ごちゃごちゃ説明するより、例を出した方がわかりやすいでしょう。

enum tag {zero, one, ....};

というふうに、宣言します。構造体の宣言の仕方と似ていますね。 上のように宣言した後、

enum tag a, b, c;

とすれば、変数a, b, cはenum tag型であると言うことになります。 ここで、変数a, b, cは最初に宣言した{ }の中の値しか取らない変数と言うことになります。 その値とは、0から始まり、1つずつ増えていく整数です。

enum animal {cat, dog, rat}; enum animal a; a = dog;

というようにすれば、まずcatに0,dogに1,ratに2の値が割り付けられます。 そして、enum animal型の変数はこの3つの値しか取りません。 上の例では、aにdog(1)が代入されました。 また、この0から1ずつ増加する整数というのは、 だぶってもかまいません。間が飛んでもかまいません。

enum animal {cat, dog, rat = 5, pig, man}

とすれば、cat=0, dog=1, rat=5, pig=6, man=7ということになります。 また、変数を一度に宣言してもかまいません。これも構造体と同じです。

enum animal {cat, dog, pig} a, b;

では、実際にプログラムを作って確かめてみましょう。

さて、左のプログラムが実行されたとき どのような結果になるか予想してみてください。

使い方は、何となくわかったでしょうか。

一体、こんなもの何の役に立つのだ?とお思いのあなた! これが結構便利なのです。 たとえば、第26章でやった エスケープ・シーケンスによる色づけを思い出してください。

psが30ならくろ、31なら赤、32なら緑...

何となくenum型で表せそうな気がしませんか。 では、その例をプログラムしてみましょう。

左のプログラムは、マクロなどを使ってもう少し すっきり書き直すことができます。

色づけが終わったら必ず白に戻してください。 でないとプロンプトまで色が付いてしまいます。

enum型のenumとは英語のenumerate(列挙する)から きています。また、{ }の中の単語?を 「列挙子」といいます。列挙子は整数値として 扱えますが、整数を列挙子に変換するには、 型キャストが必要です。(普通こんなことはしない。 型キャストの結果はどうなるかは不定) また、列挙型変数を宣言するときCでは

enum animal a, b;

というように書きましたがC++では

animal a, b; と書くことができます。 C++については、 続編で解説する予定です。


[Index][総合Index] [Previous Chapter] [Next Chapter]

Update Dec/22/1996 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。