今天发现对C语言中的枚举类型不熟悉,在学校的时候仅仅是知道有这个类型,但今天看公司大神写的代码里把枚举类型用得贼溜。而我还是菜鸟看不懂,只好重拾以前的课本,再好好专研枚举类型的用法。
如果一个变量只有几种可能的值,可以定义为枚举类型,所谓的“枚举”就是把可能的值一一罗列出来,但是变量的值只限于罗列出来的值得范围内。
声明枚举类型用enum开头。例如
enum Weekday{sum,mon,tue,wed,thu,fri,sat};
也可以不声明有名字的枚举类型,而直接定义枚举变量,例如:
enum{sun,mon,tue,wed,thu,fri,sat} workday,weekend;
可以用枚举类型来定义枚举变量,枚举变量的取值仅限于枚举类型所罗列的值;例如
enum Weekday(枚举类型) workday,weekend(枚举变量);
workday和weekend被定义为枚举变量,花括号中的sum,mon,...,sat称为枚举元素或枚 举常量。枚举变量workday和weekend的取值只能是sun到sat之间。
workday=mon;//正确
weekend=sun;//正确
weekend=monday;//错误,monday不是指定的枚举元素之一。
说明:
(1)C编译对枚举类型的枚举元素是按常量处理,故称枚举变量。因此不能对枚举元素赋值。
(2)枚举元素本身由系统本身定义了一个表示序号的数值,从0开始顺序定义为0,1,2,3,4.......等。
(3)只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:
workday=mon;//正确
workday=1;//错误
(4)如一定要把数值赋予枚举变量,则必须用强制类型转换。 如:
workday=(enum weekend)1;