- ベストアンサー
C語でenumの使い方
http://www9.plala.or.jp/sgwr-t/c/sec16.html の下部に enum week { SUN, MON, TUE, WED, THU, FRI, SAT }; int main(void) { enum week w; /* ⇒列挙型 week で変数 w を宣言 */ w = MON; /* ⇒変数 w に列挙定数 MON を代入 */ と書かれています。 列挙型 week で変数 w を宣言するのはどういうときに メリットがありますか? 普通にunsigned char w と何が違うのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
unsigned char w で宣言した時には、変数wは0から255の値を取ることができます。たとえ0~7しか使わないと決めたとしても、間違って8を代入するようなバグを作り込んでしまった場合に、それを自動で検出することはできません。 しかし質問文にあるようなenum型で宣言した場合、変数wにはSUN, MON, TUE, WED, THU, FRI, SAT以外の値が入らないことを明確に宣言していることになります。なのでそれ以外の値を代入するようなプログラムを書いた場合、ビルドの段階でエラーになります。 またdefine定義を使ってSUN, MON, TUE, WED, THU, FRI, SATを7つ用意することに比べて、enum宣言はSUN, MON, TUE, WED, THU, FRI, SATの7つが一括りの仲間というかグループなのだということが明確に分かるのと、あくまでenum型変数に対する代入や比較でしか使えないので、元々変数wの評価用に用意したdefine定義がいつの間にか全然別の処理で別の変数との代入や比較、演算なんかで使われてしまっていた、なんでことがなくなります、 このあたりのメリットにより、バグの作り込みを防止できる可能性が高まり、人がソースを見た時の分かりやすさが向上し、将来元のプログラムをよく知らない人がソースを修正する場合に本来の意図と異なった修正をしてしまう、といった混乱が起こりにくくなることが期待できます。 これらを指して「可読性が上がる」と表現してます。
その他の回答 (1)
- f272
- ベストアンサー率46% (8467/18127)
enumを使うと可読性が高くなる。