C言語 列挙型(Enum)マスター: 定義・宣言・フラグ操作
C言語 列挙型(Enum)
C言語での列挙型の定義、宣言、活用法を、実践例、フラグ技法、サイズの知見とともに解説します。
C言語において、列挙型(enum)は、名前付き整数定数のセットをグループ化する型で、意図の明確化とコンパイル時の型安全性を提供します。
enum flag {const1, const2, ..., constN};
デフォルトでは、const1は0、const2は1、以下同様になります。宣言時にこれらの値を上書きすることも可能です。
// enum定数のカスタマイズ
enum suit {
club = 0,
diamonds = 10,
hearts = 20,
spades = 3,
};
列挙型の宣言
enumを定義すると、変数に使える新しい型が作られます。宣言とインスタンス化の方法:
enum boolean {false, true};
enum boolean check; // 変数宣言
変数checkはenum boolean型になります。値はfalse=0、true=1にマッピングされます。
enum boolean {false, true} check;
例: 曜日列挙
#include <stdio.h>
enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
int main() {
enum week today = Wednesday;
printf("Day %d", today + 1);
return 0;
}
出力
Day 4
なぜEnumを使うのか?
Enum変数は単一の名前付き値を保持し、コードを自己文書化します。また、デフォルトではintと同じストレージを占有し、一般的なプラットフォームでは4バイトです。
#include <stdio.h>
enum suit {club = 0, diamonds = 10, hearts = 20, spades = 3} card;
int main() {
card = club;
printf("Size of enum variable = %d bytes", sizeof(card));
return 0;
}
出力
Size of enum variable = 4 bytes
このサイズは基盤となるint型と一貫していますが、正確なサイズはコンパイラとアーキテクチャによって異なる場合があります。
Enumをフラグとして使う
各定数を異なる2の累乗にすると、Enumはフラグ表現に優れます。これにより、ビットごとのORでフラグを結合し、ビットごとのANDでテストできます。
#include <stdio.h>
enum designFlags {ITALICS = 1, BOLD = 2, UNDERLINE = 4} button;
値が2の累乗であるため:
// 2進表現 ITALICS = 00000001 BOLD = 00000010 UNDERLINE = 00000100
これらを結合できます:
#include <stdio.h>
enum designFlags {BOLD = 1, ITALICS = 2, UNDERLINE = 4};
int main() {
int myDesign = BOLD | UNDERLINE; // 00000001 | 00000100 = 00000101
printf("%d", myDesign);
return 0;
}
出力
5
出力5は、BOLDとUNDERLINEの両方がアクティブであることを示します。
特定フラグのチェック:
if (myDesign & ITALICS) {
// italicsを処理
}
Enumなしでも多くのことが可能ですが、関連定数の管理、特にフラグ操作では、堅牢で型安全な方法を提供します。
C言語
- C# Hello World – 初めてのC#アプリケーション構築
- C# キーワードと識別子:ルール、一覧、ベストプラクティス完全ガイド
- C# 変数とプリミティブデータ型:完全マスターガイド
- C#演算子完全ガイド:C#における演算子の包括的解説
- C# ビット演算子とビットシフト演算子をマスターする:包括的ガイド
- C# 入出力の基礎:ユーザー入力と出力の基本をマスター
- C# の式、文、ブロック:実践例で徹底理解
- C# コメントをマスターする:種類、ベストプラクティス、XML ドキュメント
- C# switch 文をマスターする:構文、例、ベストプラクティス
- C# 三項演算子:条件式を簡潔に書くためのガイド
- C# break 文:使い方とタイミングを徹底解説