工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

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言語

  1. C# Hello World – 初めてのC#アプリケーション構築
  2. C# キーワードと識別子:ルール、一覧、ベストプラクティス完全ガイド
  3. C# 変数とプリミティブデータ型:完全マスターガイド
  4. C#演算子完全ガイド:C#における演算子の包括的解説
  5. C# ビット演算子とビットシフト演算子をマスターする:包括的ガイド
  6. C# 入出力の基礎:ユーザー入力と出力の基本をマスター
  7. C# の式、文、ブロック:実践例で徹底理解
  8. C# コメントをマスターする:種類、ベストプラクティス、XML ドキュメント
  9. C# switch 文をマスターする:構文、例、ベストプラクティス
  10. C# 三項演算子:条件式を簡潔に書くためのガイド
  11. C# break 文:使い方とタイミングを徹底解説