enum 枚举类型
当一种变量的可能取值非常有限时,可以用 enum 获得直观的效果,如###1。。
在软件设计的最初阶段(概念设计),为避免过多纠缠语言的技术细节,需要用最直观的表述方式来描述问题空间,伪代码就是一个良好的运用。enum并不在该阶段使用,但可以达到类似的目的,即使思维直接作用于问题,而非电脑或者说程序语言。
enum [tag] {enum-list} [declarator]; // for definition of enumerated type
enum Day {Saturday, Sunday = 0, Monday, Tuesday, Wednesday, Thursday, Friday}; //Saturday = 0 by default, Sunday = 0 as well
void Prnt (Day day) // Print whether a day is a 'Weekend' or a "Weekday".
{
if (day ==0) cout << "Weekend" << endl;
else cout << "Weekday" << endl;
}
int main (void)
{
enum Fruit {apple, pear, orange, banana} frt1; // 'frt1' can be declarated here.
// int apple; // error: redefinition of 'apple'
typedef enum Fruit ShuiGuo; // In c++, 'enum' can be omitted.
enum Fruit frt2 = apple; // In c++, 'enum' can be omitted.
ShuiGuo frt3 = pear; // After type-declaration synonym, 'enum' can not exist here!
frt1 = (Fruit) 0; // 'frt1' can be assigned with number by explicit cast.
for (int i = apple; i <= banana; i++) ###1
switch (i)
{
case apple: cout << "apple" << endl; break;
case pear: cout << "pear" << endl; break;
case orange: cout << "orange" << endl; break;
case banana: cout << "banana" << endl; break;
default: break;
}
// Print whether a day is a 'Weekend' or a "Weekday".
Prnt (Saturday);
Prnt (Sunday);
Prnt (Monday);
Prnt (Tuesday);
Prnt (Wednesday);
Prnt (Thursday);
Prnt (Friday);
return 0;
}