C++列挙enum

1804 ワード

1.enumの列挙
列挙は定数に等しい.C/C++言語では#defineとconstを使用してシンボル定数を作成できますが、enumツールを使用するとシンボル定数だけでなく、新しいデータ型も定義できますが、一定のルールで行う必要があります.列挙タイプの定義enum weekday{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sundayが列挙量であり,整数を表す列挙タイプweekdayを定義した.デフォルトでは、0から6をそれぞれ表します.enum weekday{Monday=1,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}などの値を変更することもできます.1番目は1を表すので、後の列挙量はそれぞれ2〜7を表す.各列挙量の値は、enum weekday{Monday=1,Tuesday,Wednesday=5,Thursday,Friday=8,Saturday,Sunday}など、明確に定義することもできる.列挙定数は、それぞれ1,2,5,6,8,9,10を表す.まとめ:初期化されていない列挙値の値は、デフォルトでは前の列挙値より1大きくなります.
列挙名も必須ではなく、名前のない列挙タイプを匿名列挙と呼ぶ.例えば:enum{MALE,FEMALE};使用:int n=MALE;const int MALE=0に等しい.CONST INT FEMALE=1;
列挙変数の定義に列挙タイプがあれば、その変数を定義することができます:weekday day;ただし、dayはweekdayの列挙定数の範囲内でのみ値を取得できます.そうしないと、コンパイルエラーが発生します.
列挙変数の付与enum weekday{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}a,b,c;a=Sunday; b=Monday; c=Tuesday; a,b,cの値はそれぞれ6,0,1である.列挙変数に整数で値を割り当てることはできません.例えばa=0;これは間違いです.しかし、強制変換を加えることができます:a=(weekday)0;a=Mondayに相当します.
次の方法では、weekdayタイプの列挙変数weekを作成し、weekday(2)、すなわち値2を割り当てます.weekday week(weekday(2)); cout<
列挙の値範囲は、強制変換によって他のタイプの値を列挙変数に割り当てることができることについて前述した:Week=weekday(2);これは合法的です.でもWeek=weekday(20);不法です.ここでは、列挙値範囲の概念に関する.列挙の上限は、最大列挙量よりも大きい最小の2のべき乗であり、1を減算する.列挙の下限には、1、列挙量の最小値が0未満でなければ、列挙下限は0をとる.二、列挙量の最小値が0より小さい場合、列挙下限は最小列挙量の最大の2より小さいべき乗であり、1を加える.
例えば、enum enumType 1{First=-5、Second=14、Third=10}が定義されている場合.列挙の上限は16-1=15(16は最大列挙量14より大きく、2のべき乗)であり、列挙の下限は-8+1=-7(-8は最小列挙量-5より小さく、2のべき乗)である.
2.列挙応用
完璧なswitch文と結合
enum enumType{Step0, Step1, Step2} Step=Step0;//                 Step,     Step0
enum e(enum(2));
switch (Step)
{
  case Step0:{...;break;}
  case Step1:{...;break;}
  case Step2:{...;break;}
  default:break;
}