跳到主要内容

C 语言枚举

提示
  1. 定义枚举类型:在C编程中,使用enum关键字定义枚举类型,它包含一系列整数常量,默认从0开始递增,但可以在声明时更改。
  2. 枚举变量声明和使用:可以声明枚举类型的变量,例如enum boolean check;,并将其用于存储枚举中的一个值。
  3. 枚举的应用:枚举用于创建只能取特定值集合的变量,常用于标志位设置,如使用二进制位操作符实现多个标志位的组合。

在C编程中,枚举类型(也称为enum)是由整型常量组成的数据类型。要定义枚举,使用enum关键字。

enum flag {const1, const2, ..., constN};

默认情况下,const1是0,const2是1,依此类推。在声明时,如果需要,您可以更改枚举元素的默认值。

// 更改枚举常量的默认值
enum suit {
club = 0,
diamonds = 10,
hearts = 20,
spades = 3,
};

枚举类型声明

当您定义一个枚举类型时,就创建了变量的蓝图。以下是创建枚举类型变量的方法。

enum boolean {false, true};
enum boolean check; // 声明一个枚举变量

这里,创建了一个类型为enum boolean的变量check。

您也可以这样声明枚举变量。

enum boolean {false, true} check;

这里,false的值等于0,true的值等于1。

示例:枚举类型

#include <stdio.h>

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

int main()
{
// 创建today变量,类型为enum week
enum week today;
today = Wednesday;
printf("Day %d",today+1);
return 0;
}

输出

Day 4

为什么使用枚举?

枚举变量只能取一个值。以下是一个示例,用于演示这一点,

#include <stdio.h>

enum suit {
club = 0,
diamonds = 10,
hearts = 20,
spades = 3
} card;

int main()
{
card = club;
printf("枚举变量的大小 = %d 字节", sizeof(card));
return 0;
}

输出

枚举变量的大小 = 4 字节

我们得到4是因为int的大小是4字节。

这使得枚举成为处理标志的好选择。

如何使用枚举进行标志?

我们来看一个例子,

enum designFlags {
ITALICS = 1,
BOLD = 2,
UNDERLINE = 4
} button;

假设您正在为Windows应用程序设计一个按钮。您可以设置ITALICS、BOLD和UNDERLINE标志来处理文本。

上述伪代码中所有整型常量都是2的幂次方的原因在于。

// 二进制表示

ITALICS = 00000001
BOLD = 00000010
UNDERLINE = 00000100

由于整型常量是2的幂次方,您可以同时使用两个或更多标志而不重叠,通过使用按位或|运算符。这允许您同时选择两个或更多标志。例如,

#include <stdio.h>

enum designFlags {
BOLD = 1,
ITALICS = 2,
UNDERLINE = 4
};

int main() {
int myDesign = BOLD | UNDERLINE;

// 00000001
// | 00000100
// ___________
// 00000101

printf("%d", myDesign);

return 0;
}

输出

5

当输出是5时,您总是知道使用了加粗和下划线。

此外,您可以根据需要添加标志。

if (myDesign & ITALICS) {
// 斜体的代码
}

这里,我们已将斜体添加到我们的设计中。注意,只有斜体的代码写在if语句内。

您可以在C编程中几乎不使用枚举就完成任何事情。然而,在某些情况下,它们可能非常方便。