在 C 编程中,枚举类型(也称为 enum)是一种由整数常量组成的数据类型。定义枚举使用 enum
关键字。
enum flag {const1, const2, ..., constN};
默认情况下,const1 为 0,const2 为 1,依此类推。如果需要,您可以在声明期间更改枚举元素的默认值。
// Changing default values of enum constants enum suit { club = 0, diamonds = 10, hearts = 20, spades = 3, };
枚举类型声明
当您定义一个枚举类型时,会创建变量的蓝图。以下是创建枚举类型变量的方法。
enum boolean {false, true}; enum boolean check; // declaring an enum variable
这里,我们创建了一个 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()
{
// creating today variable of enum week type
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("Size of enum variable = %d bytes", sizeof(card));
return 0;
}
输出
Size of enum variable = 4 bytes
我们得到 4 的原因是 int
的大小是 4 字节。
这使得枚举成为处理标志(flags)的不错选择。
如何使用枚举作为标志?
让我们举个例子,
enum designFlags {
ITALICS = 1,
BOLD = 2,
UNDERLINE = 4
} button;
假设您正在为一个 Windows 应用程序设计一个按钮。您可以设置 ITALICS、BOLD 和 UNDERLINE 标志来处理文本。
上述伪代码中所有整数常量都是 2 的幂是有原因的。
// In binary 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) { // code for italics }
在这里,我们在设计中添加了斜体。请注意,只有斜体的代码写在 if
语句中。
您几乎可以在 C 编程中完成任何事情,而无需使用枚举。但是,在某些情况下它们可能非常有用。