首页 > 编程笔记 > C语言笔记 阅读:17

enum在C语言中是什么意思(附带实例)

在 C语言程序中,可能需要由若干个有限数据元素组成的集合,可将这些集合定义为枚举(enum)类型。

利用关键字 enum 可以声明枚举类型,这也是一种数据类型。使用该类型可以定义枚举变量,一个枚举变量包含一组相关的标识符,其中每个标识符都对应一个整数值,称为枚举常量。

例如,将果盘定义成一个枚举类型变量,其中每个标识符都对应一个整数值,代码如下:
enum Fruits(Watermelon,Mango,Grape,Orange,Apple);
Fruits 就是定义的枚举类型变量,括号中的第一个标识符 Watermelon 对数值 0,第二个标识符 Mango 对应数值 1,以此类推。

注意,每个标识符都必须是唯一的,而且不能采用关键字或当前作用域内的其他相同的标识符。


在定义枚举类型的变量时,可以为某个特定的标识符指定其对应的整型值,紧随其后的标识符对应的值依次加 1,例如:
enum Fruits(Watermelon=1,Mango,Grape,Orange,Apple);
其中,Watermelon 的值为 1,Mango 的值为 2,Grape 的值为 3,Orange 的值为 4,Apple 的值为 5。

枚举变量赋值时,只可以在枚举常量中选择:
enum Color { RED, GREEN, BLUE };
enum Color myColor = RED;  // 正确
enum Color myColor1 = 2;  // 错误 

【实例】选择星期几,其中每个枚举常量在声明的作用域内都可以看作一个新的数据类型,具体代码如下:
#include <stdio.h>

int main(){
    enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun } day;
    scanf("%d", &day); // C语言允许用 scanf() 为枚举变量读取一个整数
    switch(day){
        case Mon: puts("Monday"); break;
        case Tues: puts("Tuesday"); break;
        case Wed: puts("Wednesday"); break;
        case Thurs: puts("Thursday"); break;
        case Fri: puts("Friday"); break;
        case Sat: puts("Saturday"); break;
        case Sun: puts("Sunday"); break;
        default: puts("Error!");
    }
    return 0;
}
运行程序,结果为:

4↙
Thursday

程序中定义的枚举变量在初始化时,为第一个枚举常量赋值 1,这样 Mon 被赋值为 1 后,之后的枚举常量的值就会依次加 1。使用 switch 语句判断输入的数据与哪个标识符的值符合,然后执行 case 语句中的操作。

枚举类型什么时候使用?在实际中,有些变量的值被限定在一个有限的范围内,例如,一个星期有 7 天,一年有 12 个月等。如果把这些量声明为整型、字符型或其他类型显然是不妥的,为此,C 语言提供了枚举类型,枚举类型是一种基本数据类型,它不可能再分解为其他类型。

相关文章