C/C++で列挙型(enum)を使う方法をわかりやすく解説
列挙型(Enumeration)とは、C言語におけるユーザー定義のデータ型の一つです。整数定数に意味のある名前を割り当てるために使用され、これによりプログラムの可読性と保守性が大きく向上します。列挙型を宣言するには、「enum」というキーワードを使用します。
enumの基本構文
C言語におけるenumの基本的な構文は以下の通りです。
enum enum_name{const1, const2, ....... };
波括弧内に列挙する定数名をカンマで区切って記述します。最後の定数の後にセミコロン(;)を忘れずに付けましょう。
enum型変数の定義方法
enumキーワードは、列挙型そのものの宣言だけでなく、列挙型の変数を定義する際にも使用します。変数の定義方法には、主に以下の2通りがあります。
方法1:宣言時に型を定義し、別途変数を宣言する
enum week{sunday, monday, tuesday, wednesday, thursday, friday, saturday};
enum week day;
まずenum weekという列挙型を定義し、その後「day」という変数を宣言しています。
方法2:宣言と同時に変数を定義する
もう一つの方法として、列挙型の宣言と同時に変数を定義することも可能です。
enum week{sunday, monday, tuesday} day;
C言語におけるenumの使用例
以下は、C言語でenumを使用した実際のコード例です。値を明示的に指定した場合と、デフォルト値が割り当てられる場合の両方を確認できます。
サンプルコード
#include<stdio.h>
enum week{Mon=10, Tue, Wed, Thur, Fri=10, Sat=16, Sun};
enum day{Mond, Tues, Wedn, Thurs, Frid=18, Satu=11, Sund};
int main() {
printf("The value of enum week: %d\t%d\t%d\t%d\t%d\t%d\t%d\n\n", Mon, Tue, Wed, Thur, Fri, Sat, Sun);
printf("The default value of enum day: %d\t%d\t%d\t%d\t%d\t%d\t%d", Mond, Tues, Wedn, Thurs, Frid, Satu, Sund);
return 0;
}
実行結果
The value of enum week: 10 11 12 13 10 16 17 The default value of enum day: 0 1 2 3 18 11 12
実行結果の解説
この出力結果から、enumの重要なルールが読み取れます。
- 値を指定しない場合:先頭の定数には自動的に「0」が割り当てられ、以降は1ずつ増加していきます(例:Mond=0、Tues=1、Wedn=2)。
- 値を明示的に指定した場合:指定した値以降、次の定数からはその値+1ずつ順番に割り当てられます(例:Mon=10なら、Tue=11、Wed=12)。
- 途中で値を再指定することも可能:上記の例ではFri=10と再指定しているため、Sat=16とするとSun=17となります。
このようにenumを活用することで、マジックナンバー(意味のない生の数値)を避け、コードの意図を明確に表現できるようになります。曜日や状態管理など、関連する定数をまとめて扱いたい場面でぜひ活用してみてください。
-
C/C++からPythonオブジェクトを操作する方法(Cython埋め込みの実践ガイド)
C/C++からPythonオブジェクトを使うには?CやC++のプログラムからPythonオブジェクトを直接生成・操作したい場合、Cythonを利用するのが最も手軽な方法の一つです。ここでは、シンプルなPythonクラスをCythonでラップし、C言語側に組み込んで(埋め込んで)呼び出す例を紹介します。C++の場合も手順はほぼ同じで、コンパイル時に--cplusオプションを付けるだけで対応できます。ステップ1:Pythonクラスと公開関数を定義する(pycls.pyx)まず、ラップ対象となるPythonクラスと、C側から呼び出せるようにするためのcdef public関数を定義したファイル「py
-
Pythonクラスで列挙型(Enum)を使う方法をわかりやすく解説
Pythonの列挙型(Enum)とはPythonには標準ライブラリとして「enum」モジュールが用意されており、これを使うことで列挙型(Enum)を簡単に定義できます。列挙型とは、あらかじめ決められた名前付きの定数をひとまとめにして管理するための仕組みです。曜日やステータス、車種など、取りうる値が限られているデータを扱う際に非常に便利です。enumモジュールを利用することで、マジックナンバー(意味のない裸の数値)をコードに直接書くことを避けられ、可読性と保守性の高いプログラムを作成できます。クラス内でEnumを定義する基本例以下は、Carクラスでenum.Enumを継承し、複数の車種を列挙型と