c语言枚举的运用
- 定义一系列常量
- 枚举遍历(遍历常量)
- 与函数结合使用(作为参数和返回值)
- 与 int 变量名的比较
1. 定义一系列常量
定义一个枚举等价于定义了其里面的一系列常量。
1#include<stdio.h>
2enum Color{
3 white, blue, green // white, blue, green 作为常量,其值为 0,1
4}
5
6int main()
7{
8
9 printf("%d", blue); // 1
10 printf("%d", green); // 2
11 // 由于 blue 是常量名,故不可输出(即不能 printf("%s", blue);)
12
13 // 定义并复制枚举名,则枚举名代表这一串常量中的一个。且枚举名是变量,可以改变。
14 // 定义枚举名的两种方式:
15 enum Color color1 = 1;
16 enum Color color2 = blue; // 常量,不用双引号
17
18 // 输出常量名的方法:可以使用 switch 语句
19 switch(color1){
20 case white: // 或者 case 0:
21 printf("white");
22 break;
23 case blue:
24 printf("blue");
25 break;
26 default:
27 printf("green");
28 break;
29 }
30
31}
2. 枚举遍历
可以通过枚举遍历,进行一系列操作。
1#include<stdio.h>
2typedef enum{
3 white, blue, green, yello, purple
4}Color;
5
6int main()
7{
8
9 Color color;
10 // 输出常量值
11 for(color = white; color <= purple; color++){
12 printf("%d", color);
13 }
14
15 // 输出常量名
16 for(color = 0; color <= 4; color++){
17 switch(color){
18 case 0:
19 printf("white");
20 break;
21 case 1:
22 printf("blue");
23 break;
24 case 2:
25 printf("green");
26 break;
27 case 3:
28 printf("yello");
29 break;
30 default:
31 printf("purple");
32 break;
33 }
34 }
35}
3. 与函数结合使用
枚举名可以作为作为参数类型或返回值类型。
1#include<stdio.h>
2typedef enum{
3 white, blue, green, yello, purple
4}Color;
5
6Color printColor(Color); // 定义参数和返回值都是 枚举类型
7
8void main()
9{
10 Color color1 = 0, color2;
11 color2 = printColor(color1);
12 printf("%d", color2);
13}
14
15Color printColor(Color color){
16 printf("%d", color);
17 return ++color;
18}
4. 与 int 变量名比较
由于枚举中的常量的常量值为 int 型,故枚举常量可以与 int 等价。
1#include<stdio.h>
2typedef enum{
3 white, blue, green, yello, purple
4}Color;
5
6int printColor1(int); // 定义参数和返回值都为 int 类型
7int printColor2(Color); // 定义参数为 Color 类型
8
9void main()
10{
11 Color color1 = blue;
12 Color color2;
13 color2 = printColor1(color1); // int 型和枚举型等价
14 printf("%d", color2); // 输出 2
15 color2 = printColor2(color1);
16 printf("%d", color2); // 输出 2
17}
18
19int printColor1(int i)
20{
21 printf("%d", i); // 输出 1
22 return ++i;
23}
24
25int printColor2(Color a)
26{
27 printf("%d", a); // 输出 1
28 return ++a;
29}