シンボル定数
記号ではなく、プログラムの中で数字を表現するために特定の番号
まず、列挙
代わりに、別のconst int型の変数を定義する列挙
- 列挙は、キーワード、ユーザー定義のデータ型である列挙型次の文のように申告します
enum 枚举类型名字 {名字0 ,、、、 , 名字n};
- 彼らのような型がint型である一定のシンボル、そして0からの値を有効にするには、あるため、列挙型の名前は、括弧内の名前の使用は本当に普通ではありません使用します。
enum colors {red , yellow , green};
- これは、3つの定数、0の赤の値を作成し、黄色が1である、グリーン2
- いくつかの定数値が並んことができる必要がある場合には、定数値の列挙の定義の意味は、これらの名前を与えることです
#include <stdio.h>
enum color {red , yellow , green};
void f(enum color c);
int main(void)
{
enum color t = yellow;
// scanf("%d" , &t);
f(t);
return 0;
}
void f(enum color c)
{
printf("%d\n", c);
}
// 1
// 因为yellow的下标是1
注意:
- 列挙型の値として
- 列挙型として列挙型は追いつくことができます
- しかし、実際には整数と外部入力と出力の内部計算を行うれます
第二に、自動カウント列挙
このすべてが列挙を横断する必要がありますまたは時間の添字配列列挙量を確立するために行う必要があります非常に便利です。
enum COLOR {RED , YELLOW , GREEN , NumCOLLORS};
int main(int argc, char const *argv[])
{
int color = -1;
char *ColorNames[NumCOLLORS] = {
"red" , "yellow" , "green"
};
char *colorName = NULL;
printf("请输入你喜欢的颜色代码:\n");
scanf("%d" , &color);
if(color >= 0 && color <NumCOLLORS){
colorName = ColorNames[color];
}else{
colorName = "nuknow";
}
printf("你喜欢的颜色是%s\n", colorName);
return 0;
}
//请输入你喜欢的颜色代码:
//2
//你喜欢的颜色是green
列挙の第三に、量
- 列挙型の宣言は、時間値の量を指定することができます
- 列挙COLOR {RED = 1、黄、緑= 5、NumCOLLORS}。
enum COLOR {RED=1 , YELLOW , GREEN = 5 , NumCOLLORS};
int main(int argc, char const *argv[])
{
printf("code for GREEN is %d\n" , GREEN);
return 0;
}
// code for GREEN is 5
第四に、列挙は単にint型
割り当てられた整数値は、列挙型変数が存在せず、エラーが存在しないにもに
enum COLOR {RED=1 , YELLOW , GREEN = 5 , NumCOLLORS};
int main(int argc, char const *argv[])
{
enum COLOR color = 0;
printf("code for GREEN is %d\n" , GREEN);
printf("and color is %d\n", color);
return 0;
}
// code for GREEN is 5
// and color is 0
数え上げます
- タイプとして列挙型を使用することができますが、実際にはほとんど使用されません
- const int型よりも便利な並列処理意味のある名前、列挙の場合
- int型があるのでAcerは、列挙、列挙よりも優れています