❮ C 点运算符
C 结构填充和打包 ❯
C 语言中的枚举(或 enum)
更新于 2025/6/7 6:52:17
C 语言中的枚举(或 enum)
C 语言枚举(enum)是一种枚举数据类型,由一组整型常量组成。枚举 在将用户定义的名称赋给整型常量时非常有用。 enum 关键字用于定义枚举。
定义和声明枚举类型
要声明和定义枚举 (enum) 数据类型,请使用 enum 关键字,后跟枚举名称,并将所有值赋给大括号内的值。
语法
以下是定义枚举类型的语法:
enum enum_name{const1, const2, ... };
枚举变量声明
声明枚举类型后,还可以声明其变量来访问枚举成员(常量)。要声明枚举变量,请编写 enum 关键字,后接枚举名称 (enum_name),然后是变量名称 (var)。
语法
以下是声明枚举类型变量的语法 -
enum enum_name var;
示例
让我们定义一个名为 myenum 的枚举类型 -
enum myenum {val1, val2, val3, val4};
标识符值是无符号整数,从"0"开始。val1 表示 0,val2 表示 1,依此类推。
myenum 类型的变量声明如下:
enum myenum var;
myenum 类型的可能常量值在花括号内枚举。
更改枚举常量值
声明枚举类型时,枚举的第一个常量默认初始化为 0,第二个常量初始化为 1,依此类推。我们还可以给枚举的任何常量赋值任意整数值。
示例
在下面的示例中,我们声明了一个枚举类型,并为枚举常量赋值不同的值。
#include
enum status_codes { OKAY = 1, CANCEL = 0, ALERT = 2 };
int main() {
// 打印值
printf("OKAY = %d
", OKAY);
printf("CANCEL = %d
", CANCEL);
printf("ALERT = %d
", ALERT);
return 0;
}
输出
它将产生以下输出 -
OKAY = 1
CANCEL = 0
ALERT = 2
Switch 语句中的枚举
C 语言 switch case 语句 使用整数值。我们可以使用枚举类型定义带有(或不带有)整数类型值的常量,以便在 switch case 语句中使用它们。
示例
以下示例中,对彩虹中的颜色进行了枚举。
#include
// 枚举声明
enum colors { VIOLET, INDIGO, BLUE, GREEN, YELLOW, ORANGE, RED };
int main() {
// 枚举变量声明
enum colors color = YELLOW;
// 使用枚举的 switch 语句
switch (color) {
case BLUE:
printf("Blue color");
break;
case GREEN:
printf("Green color");
break;
case RED:
printf("Red color");
break;
default:
printf("Color other than RGB");
}
return 0;
}
输出
运行代码并检查其输出 −
Color other than RGB
枚举 (enum) 类型示例
练习以下示例,理解 C 语言中枚举 (enum) 类型的概念。
示例 1:枚举常量获取递增的整数值
C 语言为每个常量分配递增的整数值,从"0"开始。当我们将 val2 赋值给上述变量时,
var = val2;
赋值给 val2 的整数值为 1。请看以下示例 -
#include
enum myenum {val1, val2, val3, val4};
int main(){
enum myenum var;
var = val2;
printf("var = %d", var);
return 0;
}
输出
它将产生以下输出 -
var = 1
示例 2:枚举星期
声明一个枚举类型 weekdays 来枚举星期名称,并将其值赋给枚举类型变量 -
#include
int main(){
enum weekdays {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
printf ("Monday = %d
", Mon);
printf ("Thursday = %d
", Thu);
printf ("Sunday = %d
", Sun);
}
输出
它将产生以下输出 -
Monday = 1
Thursday = 4
Sunday = 0
示例 3:声明枚举类型变量
枚举数据类型的一个典型应用是将工作日赋值给整数值。在此代码中,我们声明了一个 weekdays 枚举类型的变量 -
#include
enum weekdays {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
int main(){
enum weekdays day;
day = Wed;
printf("Day number of Wed is = %d", day);
return 0;
}
输出
运行此代码时,将产生以下输出 -
Day number of Wed is = 3
示例 4:枚举值默认从"0"开始
在此代码中,我们定义了一个枚举类型,用于表示日历年中的月份名称。默认情况下,C 语言会从"0"开始赋值。例如,在下面的 C 程序中,Jan 的值是"0",Feb 的值是"1",依此类推。
#include
enum months{Jan, Feb, Mar, Apr, May, Jun, Jul,
Aug, Sep, Oct, Nov, Dec};
int main(){
for (int i = Jan; i <= Dec; i++)
printf("Month No: %d
", i);
return 0;
}
输出
运行代码并检查其输出 −
Month No: 0
Month No: 1
Month No: 2
Month No: 3
Month No: 4
Month No: 5
Month No: 6
Month No: 7
Month No: 8
Month No: 9
Month No: 10
Month No: 11
示例 5:枚举从 1 开始
要从 1 开始枚举,请明确将 1 赋给第一个值,编译器将为后续值分配递增的数字。
#include
enum months{Jan=1, Feb, Mar, Apr, May, Jun, Jul,
Aug, Sep, Oct, Nov, Dec};
int main(){
for (int i = Jan; i <= Dec; i++)
printf("Month No: %d
", i);
return 0;
}
输出
运行代码并检查其输出 −
Month No: 1
Month No: 2
Month No: 3
Month No: 4
Month No: 5
Month No: 6
Month No: 7
Month No: 8
Month No: 9
Month No: 10
Month No: 11
Month No: 12
示例 6:枚举 HTTP 状态代码
枚举类型中的常量不必具有递增的整数值。您可以为每个常量分配一个不同的、唯一的值,这些值可以按任意顺序排列。
在以下代码中,枚举类型枚举了 HTTP 状态代码。
#include
enum status {
OK = 200,
BadRequest = 400,
Unauthorized = 401,
Forbidden = 403,
NotFound = 404,
InternalServerError = 500,
};
int main(){
enum status code = InternalServerError;
if (code == 500)
printf("Internal Server Error has been encountered");
return 0;
}
输出
运行代码并检查其输出 −
Internal Server Error has been encountered
示例 7:为枚举常量赋值固定数字
您可以为某些常量赋值固定整数,而让编译器为其他常量赋值。所有未赋值的名称都会获得一个"前一个名称的值加一"的值。
#include
enum myenum {a, b = 5, c, d, e = 10, f};
int main(){
printf("a: %d
", a);
printf("b: %d
", b);
printf("c: %d
", c);
printf("d: %d
", d);
printf("e: %d
", e);
printf("f: %d
", f);
return 0;
}
输出
运行代码并检查其输出 −
a: 0
b: 5
c: 6
d: 7
e: 10
f: 11
枚举的应用
在 C 语言中,我们可以在不同情况下使用枚举,其中一些列举如下 -
存储常量值,例如,星期、月份、方向、颜色等。
枚举用于使用标志、状态码等。
在 C 语言中使用 switch-case 语句时可以使用枚举。
❮ C 点运算符
C 结构填充和打包 ❯