#include<stdio.h> enum Color{RED,BLUE,GREEN}; int main() { enum Color c = RED; printf("%d",c); return 0; }
时间: 2025-03-14 18:15:37 浏览: 9
C语言中枚举类型的基本用法
在C语言中,enum
是一种特殊的整数数据类型,用于定义一组命名的整数值。通过使用枚举类型,可以使代码更具可读性和维护性[^2]。
定义枚举类型
可以通过以下方式定义一个枚举类型及其对应的枚举值:
enum week {
SUN,
MON,
TUE,
WED,
THU,
FRI,
SAT
};
上述代码定义了一个名为 week
的枚举类型,并为其指定了7个枚举值:SUN
, MON
, ..., SAT
。默认情况下,这些枚举值会被编译器赋予连续的整数值,起始值为0。因此,在这个例子中,SUN=0
, MON=1
, ..., SAT=6
。
声明并初始化枚举变量
一旦定义了枚举类型,就可以像其他基本数据类型一样声明和初始化枚举变量:
enum week today = SUN;
这里声明了一个名为 today
的枚举变量,并将其初始化为 SUN
。
如何打印枚举值
由于枚举本质上是一个整数类型,可以直接将枚举值转换为整数并通过标准库函数 printf
输出其数值形式。以下是完整的示例代码:
#include <stdio.h>
// 定义枚举类型
enum week {
SUN,
MON,
TUE,
WED,
THU,
FRI,
SAT
};
int main() {
// 声明并初始化枚举变量
enum week today = MON;
// 打印枚举值的整数值
printf("Today is %d\n", today);
return 0;
}
运行此程序会输出:
Today is 1
这是因为 MON
被赋值为1(基于前面提到的默认规则)。
如果希望打印的是字符串而非整数值,则需要手动映射每个枚举值到相应的字符串表示。例如:
#include <stdio.h>
// 定义枚举类型
enum week {
SUN,
MON,
TUE,
WED,
THU,
FRI,
SAT
};
const char* get_weekday_name(enum week day) {
switch (day) {
case SUN: return "Sunday";
case MON: return "Monday";
case TUE: return "Tuesday";
case WED: return "Wednesday";
case THU: return "Thursday";
case FRI: return "Friday";
case SAT: return "Saturday";
default: return "Unknown Day";
}
}
int main() {
enum week today = MON;
// 使用辅助函数获取字符串表示
printf("Today is %s\n", get_weekday_name(today));
return 0;
}
这段代码利用了一个辅助函数 get_weekday_name
来实现从枚举值到字符串的映射[^3]。
枚举的基础类型
如果没有显式指定基础类型,默认情况下,枚举的基础类型是 int
。然而,也可以通过扩展语法显式设置不同的基础类型,例如 char
或 long
等。需要注意的是,这种功能通常依赖于特定编译器的支持。
例如:
typedef enum : unsigned short {
SMALL_VALUE = 1,
LARGE_VALUE = 65535
} MyEnumType;
在此示例中,MyEnumType
的基础类型被设定为 unsigned short
。
相关推荐


















