枚举的定义:
枚举的定义: enum [枚举名] {美剧类型列表}; 说完了声明枚举,我们开始考虑具 “枚举常量” 代表什么?
通过上边的定义 我们可以写出枚举的基本写法(ps: [] 代表可选);
1. 声明 使用
enum Weekday { sun, mon, tue, wed, thu, fri, sat }; // ok enum Weekday weekday,weekend;
2. 声明 使用
enum Weekday { sun, mon, tue, wed, thu, fri, sat }weekday,weekend;
枚举常量
1. 我们举个例子说明
#include <stdio.h> enum Weekday { sun = 7, mon = 0, tue = 1, wed = 3, thu, fri, sat }weekday,weekend; int main(int argc, char *argv[]) { printf("%d ",weekday=sun); printf("%d ",weekday=mon); printf("%d ",weekday=tue); printf("%d ",weekday=wed); return 0; }
我们 总结一下陈词:
- C编译对枚举类型的枚举元素按照常量处理,所以称之为枚举常量。
- 每一个枚举元素都代表一个整数,C语言编译是按照定义时的顺序默认它们的值为0,也就是说如果
- 开始的时候如果未对 “sun” 赋初始值的话, “sun”即为 0; 后边的数字为 1,2,3,4,5,6。
枚举易错
#include <stdio.h> enum Weekday { sun = 7, mon = 0, tue = 1, wed = 3, thu, fri, sat }one,two,three; int main(int argc, char *argv[]) { one = mon; two = tue; three = wed; printf("%d %d %d ",one,two,three); return 0; }
1. 因为枚举值是常量,不能赋值,所以下面的写法是错误的
sun = 5; mon = 2;
只能把枚举值赋予枚举变量,例如:
a = sun;
b = sat;
2.同时,不建议把数值直接赋给枚举变量,例如
a= 1; b= 6;
a = (enum week)1; //如果一定要使用数值,必须使用强制类型转换:
b = (enum week)6;
因为已经使用了 sun、mon…sat 几个标识符,所以不能再使用它们来定义变量等,例如:
int sun = 3; char mon;
都是错误的。