1.枚举
如果我们的程序出现一些数字,我们应该尽量地用一些符号来表达这些数字,而不是直接让这些数字出现在程序当中.这样做最大的好处是可读性.所以我们尽可能用符号而不是具体的数字来表达程序中的数字.这时这些符号所表达的值应该是const的.如:
我们定义了三个变量,同时声明它们的值为const.现在呢,我们可以把这个事情往前再推进一步,我们用一个更加方便的方式去定义这样一些罗列起来的,可以排列起来的这样的一些数字,我们把它叫做枚举.我们在这里定义了一个枚举叫做color.这个枚举是一种有名字的量,它里面有三个量.当我们这样去定义的时候,我们知道red=0,yel=1,gre=2.于是我们就可以直接使用这些名字,这是一个更方便的方式用来定义一些名字.比用const int要来得方便一些.这是一个例子:
所以我们知道:
enum color实际上声明了一种新的类型,这种新的类型叫做color.这样之后我们可以把它当作int或者float来使用.当然作为函数参数使用的时候你必须带上enum,意思是叫做color这种枚举类型.直接说color在c语言是不行的,但是往后走,c++支持这件事情.
2.套路:自动计数的枚举
我们定义了这样一个numcolors,这样需要(用数组)遍历所有的枚举量或者需要建立一个用枚举量做下标的数组的时候就很方便了.
3.枚举量
numcolors的值自然是6.
枚举实际上只是int.在历史上有些版本的编译器可能会说要求你给枚举的变量赋值的时候做强制类型转换而不能直接用整数,但是现代的编译器反而在这件事上面放轻松了.
还有,即使给枚举的变量赋不存在的整数值也没有任何的warning或者error.
像我们这里直接给color赋了一个0值,但我们知道我们上面的COLOR是没有0的,red是1,0对它来说是没有任何意义的.居然这件事情是可以做的.这个原因是因为:
几乎可以说枚举在c里面是一个不那么成功的东西.c以前或者以后的语言基本做的都比c好.但是它毕竟是c语言当中我们可以去做的一种自定义的数据类型.我们还是需要去了解.可是呢我们更需要去知道说,在现实当中,人们拿c语言的枚举主要的目的是定义符号量,而不是把他当作一种枚举类型来使用.