新しく質問する

列挙子集合を持つ列挙型を宣言する事にどんな意味があるのでしょうか?

役に立った:0件
  • 質問者:program
  • 投稿日時:2002/12/24 00:40
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

列挙子集合を持つ列挙型を宣言しなくてもあまり意味がないような気がするのですがよければメリットやデメリットや使う意味等を教えてください

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.2ベストアンサー10pt

  • 回答者:toysmith
  • 回答日時:2002/12/26 01:59

例えばエラーコードの定義。

100番台がメモリエラー、200番台がファイルエラー…と定義する仮定します。

if (status == 101) {
なんの事かわかりません

if (status == EMemoryFull) {
メモリが足りないということがわかります。

これだけだと#defineで充分なのですが、列挙型だと
enum {
EMemory = 100,
EMemoryFull,
EBadHandle,
EEmptyHandle,
...
EFile=200,
...
};

という宣言が出来ます。
メモリエラーが増えすぎてファイルエラーを300番台にズラさなくてはいけなくなったときでも
EFile=200,
の部分を
EFile=300,
とするだけでオッケーです。

使い慣れるとメチャクチャ便利です。

通報する

  • 参考になった:0件

No.1ベストアンサー20pt

  • 回答者:bugmaru
  • 回答日時:2002/12/24 01:42

メリットと言えば、プログラムの可読性が良くなる事と、コーディング時点で
不用意に変な値を代入してしまう事を防げると言う事が上げられると思います。

プログラムの可読性に関しては、無秩序な列挙子を定義してしまえば、列挙型だから可読性が良くなると言い切れない部分はありますが、意味のある集合体であれば
ある1つの列挙子を代入している個所を見れば、他にどんな値が列挙子として定義
されているか想定が付きやすいです。

もう1つの、コーディング時点で不用意な値...については、列挙型変数は、定義されている列挙子しか値の代入ができませんから、コーディング時に不正な代入を記述してしまった時、コンパイルエラーで引っかかる事です。
C言語の場合、文法的に合ってれば使い方が間違っていてもコンパイル通ってしまうので、バグの元となってその後のデバッグに苦労します。ですからコーディング時点でバグを出さない(出しにくい)コーディング手法が大事な言語ですから、そういう意味で列挙型は役に立ちます。

可読性やバグを出さないコーディング手法は他にも色々あると思いますので、
列挙型はオプションの1つだと考えれば良いのではないでしょうか。

通報する

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ

Facebook公式ページ

公式Twitter