列挙型
データ型の可能な値が少数しかなく、各値に独自の意味がある場合、コードの読みやすさを向上させるために、それらを Enum 型 (中国語では列挙と呼ばれます) として定義できます。
列挙型の色 {RED、GREEN、BLUE};
printf("%d\n", RED);
printf("%d\n", 緑);
printf("%d\n", ブルー);
上記の例では、プログラムで 3 つの色が必要であると仮定すると、enum
コマンドを使用して、これらの 3 つの色を列挙型 colors
として定義できます。この列挙型には、RED
、GREEN
の 3 つの値のみが含まれます。 、「ブルー」。このとき、これら 3 つの名前は自動的に整数定数になり、コンパイラはデフォルトでそれらの値を数値 0
、1
、2
に設定します。比較すると、「RED」は「0」よりもはるかに読みやすいです。
Enum 内の定数名は識別子の命名規則に従いますが、通常は大文字であることに注意してください。
使用する場合、変数は Enum 型として宣言できます。
列挙型の色 カラー;
上記のコードは、変数 color
を型 enum Colors
として宣言しています。この変数の値は、定数 RED
、GREEN
、および BLUE
のいずれかです。
色 = 青;
printf("%i\n", color);
上記のコードは、変数 color
の値を BLUE
に設定します。ここで、BLUE
は、値 2
に等しい定数です。
typedef コマンドは、Enum 型のエイリアスを作成できます。
typedef 列挙型 {
羊、
小麦、
木材、
レンガ、
鉱石
} リソース;
リソースr;
上記の例では、RESOURCE
は Enum 型のエイリアスです。変数を宣言するときは、このエイリアスを使用します。
Enum型の宣言時に同一行の変数に値を代入するという珍しい書き方もあります。
列挙型 {
羊、
小麦、
木材、
レンガ、
鉱石
r = レンガ、s = 木材;
上記の例では、「r」の値は「3」、「s」の値は「2」です。
Enum のプロパティは定数として自動的に宣言されるため、Enum を使用する目的がデータ型をカスタマイズすることではなく、定数のセットを宣言することである場合があります。このとき、比較的簡単な以下のような書き方が可能です。
enum { 1、2 };
printf("%d %d", ONE, TWO); // 0 1
上記の例では、「enum」はキーワードであり、その後にコード ブロックが続き、定数はコード内で宣言されています。 ONE
と TWO
は 2 つの Enum 定数です。
定数を区切るにはカンマを使用します。最後の定数の後のカンマは省略することも、そのままにすることもできます。
enum { 1、2、 };
Enum には自動的に番号が付けられるため、定数に値を割り当てる必要はありません。 C言語は自動的に0からインクリメントして定数に値を代入します。ただし、C 言語では ENUM 定数の値を指定することもできますが、それは整数としてのみであり、他の型は指定できません。したがって、整数を使用できる場所であればどこでも Enum 定数を使用できます。
enum { ONE = 1、TWO = 2 };
printf("%d %d", ONE, TWO); // 1 2
enum 定数は離散値にすることができます。
enum { X = 2、Y = 18、Z = -2 };
Enum 定数は同じ値にすることもできます。
enum { X = 2、Y = 2、Z = 2 };
定数のセットの中には、値が指定されているものと、値が指定されていないものがあります。次に、値が指定されていない定数には、値が指定されている最後の定数から自動的に増加する値が割り当てられます。
列挙型 {
あ、// 0
B、// 1
C = 4, // 4
D、// 5
E、// 6
F = 3, // 3
G、// 4
H // 5
};
Enum は変数と同じスコープを持ちます。最上位で宣言された場合はファイル全体で有効ですが、コード ブロック内で宣言された場合はそのコード ブロックでのみ有効です。 Enum の利点は、「int」を使用して宣言された定数と比較して、コードの意図をより明確に表現できることです。
作者: wangdoc
アドレス: https://wangdoc.com/
ライセンス: クリエイティブ・コモンズ 3.0