C 枚举 (enum)

C 枚举 (enum)

❮ 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 结构填充和打包 ❯

关于作者: admin

相关推荐

VivoY67与麦芒5的完美结合(探索VivoY67与麦芒5联合打造的全新体验,解锁智能手机的无限潜能)
在支付宝商家认证过程中,支付宝什么时候会打款到商家对公账户?
菲顿:如何用狗绳有效训狗 让狗狗听话的训练方法