C基础——枚举enum
## 枚举类型
声明枚举类型来表示整型常量。所以枚举类型实际上是整型。
利用枚举类型,可以为整型常量取一个“名字”。
使用枚举类型的目的是提高程序的可读性。其语法与结构类似,但成员之间以逗号分隔。
### (1)声明
```C
enum spectrum{red, orange, yellow, green, blue, violet};
//{}中的标识符枚举了enum spectrum类型的变量可能有的值,被称为枚举符。
//默认情况下,第1个枚举符的值为0,往后一次递增1
enum spectrum color; //color是enum spectrum类型的变量
```
==需要注意的是,虽然枚举符是int类型,但枚举类型的变量可以是任意整型,只要能存储枚举符的值。==
==另外,C允许枚举类型变量使用自增运算符,但C++却不允许这么做。所以如果要编写可移植的代码,需要将color声明为int类型。==
### (2)枚举常量
枚举常量指的是枚举声明中{}中的枚举符。
默认情况下,枚举常量的值从0开始往后依次递增1
也可以为枚举符指定整型值:
```C
enmu levels = {low= 10, midel = 50, high = 100};
```
如果只为其中一个枚举符指定了值,那么后续的枚举符将会从改值开始,依次递增1:
```C
enmu feline = {cat, lynx = 10, puma, tiger}; // 四个枚举符所代表的之分别为:0,10,11,12
```
### (3)enum的用法
使用枚举类型的目的是为了提高程序的可读性,且==枚举类型只能在内部使用==
由于枚举类型实际上是整型,所以可以使用整型变量的地方就可以使用枚举变量。
枚举符是整型常量,所以可以在case标签中使用
### (4)共享名称空间
C语言通过==名称空间==来标识程序中的各个部分,即通过名称来识别。作用域是名称空间概念的一部分:==两个不同作用域的同名变量不冲突;两个相同作用域的同名变量会发生冲突。==
名称空间是分类别的。在特定作用域中,结构标记、联合标记和枚举标记共享相同的名称空间,且该名称空间与普通变量使用的空间不同。这意味着,在相同的作用域中,可以声明同名的标记和变量。
同名的标记和变量很容易产生混淆,强烈不推荐!!!