Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語の列挙型(enum)とは?定義方法と使い方を実例付きで解説

列挙型(enumerated data type)は、プログラマが独自のデータ型を作成し、そのデータ型を持つ変数が取りうる値を明確に定義するために使用される仕組みです。宣言にはenumというキーワードを使用します。列挙型を使うことで、曜日や月などの関連する定数群に名前を付けられ、コードの可読性と保守性が向上します。

構文

列挙型の基本的な構文は以下の通りです。

enum タグ名{   識別子1, 識別子2,……,識別子n};

記述例

以下は、曜日を表す列挙型の定義例です。

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

この定義におけるポイントは次の通りです。

  • 識別子の値は符号なし整数として扱われ、デフォルトでは0から順に割り当てられます。
  • つまり、mon は 0、tue は 1、wed は 2 といった具合に、以降も同様に対応します。

Cプログラム例

列挙型を使用したC言語のプログラムは以下の通りです。

#include<stdio.h>main ( ){   enum week {mon, tue, wed, thu, fri, sat, sun};   printf ("Monday = %d", mon);   printf ("Thursday = %d", thu);   printf ("Sunday = %d", sun);}

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

Monday = 0Thursday =3Sunday =6

なお、列挙型の識別子には任意の初期値を明示的に代入することも可能です。初期値を指定した場合、それ以降の識別子には指定した値から順に1ずつ加算された値が自動的に割り当てられます。

初期値を指定したCプログラム例

次に、先頭の識別子に初期値「1」を設定したプログラムの例を示します。

#include<stdio.h>main ( ){   enum week {mon=1, tue, wed, thu, fri, sat, sun};   printf ("Monday = %d", mon);   printf ("Thursday = %d", thu);   printf ("Sunday = %d", sun);}

実行結果

このプログラムを実行すると、以下の出力が得られます。

Monday = 1Thursday =4Sunday =7

このように、mon に 1 を代入すると、tue は 2、thu は 4、sun は 7 となり、以降の識別子にも連続した整数値が自動的に割り当てられていることが確認できます。列挙型を活用すれば、マジックナンバーを避け、意味のある名前で定数を管理できるため、バグの少ない読みやすいコードを書くのに役立ちます。

  1. C言語の基本データ型を徹底解説!int・char・floatの種類とサイズ一覧

    C言語の基本データ型とは? C言語のコンパイラがサポートする基本データ型は、大きく分けて次の4つです。 整数型(Integer) 文字型(Character) 浮動小数点型(Floating-point) 倍精度浮動小数点型(Double precision floating point) プログラムで扱う値の種類(整数・文字・実数など)に応じて適切な型を選ぶことは、正確で効率的なコードを書くための第一歩です。なお、各データ型のサイズや表現できる値の範囲は、使用するコンパイラや実行環境によって異なる場合がある点に注意してください。 整数型(Integral Data Type) 整数型は

  2. Pythonのシーケンス型とは?主な種類と特徴をわかりやすく解説

    シーケンス型とは何か Pythonにおけるシーケンス(sequence)型とは、複数の値を順序付けて整理し、効率的に格納できるデータ型の総称です。代表的なシーケンス型には、文字列(str)、リスト(list)、タプル(tuple)、bytearray、rangeオブジェクトなどがあります。 一方で、辞書(dict)やセット(set)は順序を持たないデータを扱うコンテナであり、シーケンス型には分類されません。この違いを理解しておくことは、Pythonのデータ構造を使いこなす上で非常に重要です。 主なシーケンス型の特徴 Python公式ドキュメントによると、各シーケンス型は以下のような特徴を持っ