C enum(枚举)

  • Post category:C

下面是关于C中枚举的完整使用攻略。

什么是枚举

枚举是一种 C 语言中的数据类型,它可以为一组预定义的整数值定义一个名称,常用于标识符,代替数字。使用枚举可以增强代码可读性和可维护性,减少代码冗余。

声明枚举类型

在 C 语言中,声明枚举类型的语法格式如下:

enum 枚举名 {枚举成员列表};

其中,枚举名是该枚举类型的名称,枚举成员列表包括一系列用逗号分隔的枚举成员。

示例代码如下:

enum colors {red, green, blue};

这个枚举类型定义了三种颜色枚举成员。

枚举成员赋值

默认情况下,枚举成员的值是整数,从 0 开始递增,并且枚举成员的值不能重复。但是,我们可以手动指定枚举成员的值。这种情况下,后面的枚举成员不再是默认递增的,从手动指定枚举成员的值开始递增。

示例:

enum fruits {apple = 0, banana = 2, orange};

以上代码中,apple 的值为 0, banana 的值为 2,orange 的值为 3,因为它是自动递增的。

使用枚举类型

定义好枚举类型之后,可以使用该类型来声明枚举变量,如下:

enum colors c = red;

以上代码定义了一个枚举变量 c,类型为 colors,并初始化为 red

示例1:使用枚举类型实现Switch语句

下面是一个使用枚举类型实现Switch语句的示例代码:

#include <stdio.h>

enum days {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};

int main() {
    enum days day = Tuesday;

    switch(day) {
        case Monday:
            printf("Today is Monday");
            break;
        case Tuesday:
            printf("Today is Tuesday");
            break;
        case Wednesday:
            printf("Today is Wednesday");
            break;
        case Thursday:
            printf("Today is Thursday");
            break;
        case Friday:
            printf("Today is Friday");
            break;
        case Saturday:
            printf("Today is Saturday");
            break;
        case Sunday:
            printf("Today is Sunday");
            break;
        default:
            printf("Invalid input!");
    }

    return 0;
}

示例2:使用带有枚举参数的函数

下面是一个使用带有枚举参数的函数的示例代码:

#include <stdio.h>

enum fruits {apple, banana, orange};

void print_fruit(enum fruits fruit) {
    switch(fruit) {
        case apple:
            printf("This is an apple");
            break;
        case banana:
            printf("This is a banana");
            break;
        case orange:
            printf("This is an orange");
            break;
        default:
            printf("Unknown fruit!");
    }
}

int main() {
    enum fruits fruit = banana;
    print_fruit(fruit);

    return 0;
}

以上代码定义了一个带有枚举参数的函数 print_fruit(),并在主函数中调用该函数打印出指定的水果类型。