一、课题
C++枚举类型enum。
二、学习目的
说明c++中的枚举含义以及用法。
三、学习重点
枚举数据类型是一种由程序员定义的数据类型,其合法值是与它们关联的一组命名整数常量。之所以被称为枚举类型,就是因为命名常量是作为数据类型定义的一部分而枚举或列出的。
以下是枚举类型声明的示例:
enum Name {Tom, Mark, Bill, Teresa, John};
默认情况下,编译器设置第一个枚举量为 0,下一个为 1,以此类推。在上述示例中,Tom 的值将是 0,Mark 的值为 1,等等。最后一个枚举量 John 的值为 4。
如下:
enum Colors { red, orange, yellow = 9, green, blue };
在该示例中,命名常量 red 将被赋值为 0,orange 将为 1,yellow 将为 9,green 将为 10,blue 将为 11。
四、学习难点
举值可进行关系运算;整数值不能直接赋值给枚举变量,如需要将整数赋值给枚举变量,应进行强制转换。
重要的是要意识到,enum 语句示例实际上并没有创建任何变量,只是定义数据类型。当以后创建这个数据类型的变量时,它们看起来就是整数,并且这些整数的值被限制在与枚举集合中的符号名称相关联的整数上。以下语句显示了如何定义Name数据类型的变量:
Name student;
此语句的形式与其他任何变量定义一样,首先是数据类型名称,然后是变量名称。请注意,数据类型名称是 Name,而不是 enum Name。
现在已经创建了 student 变量,它可以被赋予一个值,如下所示:
student = Mark;
变量的值可以这样测试:
if (student == Mark)
请注意,在这两个例子中,Mark周围没有引号。因为它是一个命名常量,而不是字符串常数。
即使枚举数据类型中的值实际存储为整数,也不能总是将整数值替换为符号名称。例如,不能使用下面的语句将 Mark 赋值给 student:
student = 1; //错误
但是,可以使用整数值而不是符号名称来测试枚举变量。例如,以下两个 if 语句是等效的:
if (student == Bill) if (student == 2)
还可以使用关系运算符来比较两个枚举变量。例如,以下 if 语句确定存储在 student1 中的值是否小于存储在 student2 中的值:
if (student1 <student2)
如果 student1 等于 Bill,student2 等于 John,则该语句为 true。但是,如果 student1 等于 Bill,而 student2 等于 Sharon,则该语句将为 false。
五、代码运用
1 #include<iostream> 2 using namespace std; 3 enum Weekday{SUNDAY,MONDAY,TUESDAY,WENDSDAY,TURESDAY,FRIDAY,SATURDAY}; 4 int main() 5 { 6 Weekday day; 7 enum Weekday today = FRIDAY; 8 day = SUNDAY; 9 cout << day << endl << today << endl; 10 return 0; 11 }