C语言枚举类型的应用

1,497 阅读5分钟

c语言枚举的运用

  1. 定义一系列常量
  2. 枚举遍历(遍历常量)
  3. 与函数结合使用(作为参数和返回值)
  4. 与 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}