C语言:enum(枚举)

女爷i 2023-07-18 02:34 52阅读 0赞

枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。

枚举语法定义格式为:

  1. enum 枚举名 {枚举元素1,枚举元素2,……};

接下来我们举个例子,比如:一星期有 7 天,如果不用枚举,我们需要使用 #define 来为每个整数定义一个别名:

#define MON 1 #define TUE 2 #define WED 3 #define THU 4 #define FRI 5 #define SAT 6 #define SUN 7

这个看起来代码量就比较多,接下来我们看看使用枚举的方式:

  1. enum DAY
  2. {
  3. MON=1, TUE, WED, THU, FRI, SAT, SUN
  4. };

这样看起来是不是更简洁了。

注意:第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。

可以在定义枚举类型时改变枚举元素的值:

  1. enum season {spring, summer=3, autumn, winter};

没有指定值的枚举元素,其值为前一元素加 1。也就说 spring 的值为 0,summer 的值为 3,autumn 的值为 4,winter 的值为 5

枚举变量的定义

前面我们只是声明了枚举类型,接下来我们看看如何定义枚举变量。

我们可以通过以下三种方式来定义枚举变量

1、先定义枚举类型,再定义枚举变量

  1. enum DAY
  2. {
  3. MON=1, TUE, WED, THU, FRI, SAT, SUN
  4. };
  5. enum DAY day;

2、定义枚举类型的同时定义枚举变量

  1. enum DAY
  2. {
  3. MON=1, TUE, WED, THU, FRI, SAT, SUN
  4. } day;

3、省略枚举名称,直接定义枚举变量

  1. enum
  2. {
  3. MON=1, TUE, WED, THU, FRI, SAT, SUN
  4. } day;

例1

#include

enum DAY

{

  1. MON=1, TUE, WED, THU, FRI, SAT, SUN

};

int main() {

  1. enum DAY day;
  2. day = WED;
  3. printf("%d",day);
  4. return 0;

}

运行结果为:3

在C 语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理的,所以按照 C 语言规范是没有办法遍历枚举类型的。

不过在一些特殊的情况下,枚举类型必须连续是可以实现有条件的遍历。

以下实例使用 for 来遍历枚举的元素:

例2

#include

enum DAY {

  1. MON=1, TUE, WED, THU, FRI, SAT, SUN

} day;

int main() {

  1. // 遍历枚举元素
  2. for (day = MON; day <= SUN; day++) \{
  3. printf("枚举元素:%d \\n", day);
  4. \}

}

运行结果为:

  1. 枚举元素:1
  2. 枚举元素:2
  3. 枚举元素:3
  4. 枚举元素:4
  5. 枚举元素:5
  6. 枚举元素:6
  7. 枚举元素:7

以下枚举类型不连续,这种枚举无法遍历。

  1. enum
  2. {
  3. ENUM_0,
  4. ENUM_10 = 10,
  5. ENUM_11
  6. };

枚举在 switch 中的使用:

例3

#include

#include

int main() {

  1. enum color \{ red=1, green, blue \};
  2. enum color favorite\_color; /\* ask user to choose color \*/
  3. printf("请输入你喜欢的颜色: (1. red, 2. green, 3. blue): ");
  4. scanf("%d", &favorite\_color); /\* 输出结果 \*/
  5. switch (favorite\_color)
  6. \{
  7. case red:
  8. printf("你喜欢的颜色是红色");
  9. break;
  10. case green:
  11. printf("你喜欢的颜色是绿色");
  12. break;
  13. case blue:
  14. printf("你喜欢的颜色是蓝色");
  15. break;
  16. default:
  17. printf("你没有选择你喜欢的颜色");
  18. \}
  19. return 0;

}

运行结果为:

  1. 请输入你喜欢的颜色: (1. red, 2. green, 3. blue): 1
  2. 你喜欢的颜色是红色

将整数转换为枚举

以下实例将整数转换为枚举:

例4

#include

#include

int main() {

  1. enum day
  2. \{
  3. saturday, sunday, monday, tuesday, wednesday, thursday, friday
  4. \} workday;
  5. int a = 1;
  6. enum day weekend;
  7. weekend = ( enum day ) a; //类型转换
  8. //weekend = a; //错误
  9. printf("weekend:%d",weekend);
  10. return 0;

}

运行结果为:

  1. weekend:1

发表评论

表情:
评论列表 (有 0 条评论,52人围观)

还没有评论,来说两句吧...

相关阅读

    相关 c#Enum

    介绍 枚举(Enum)是一种数据类型,在Unity中广泛应用于定义常量和限定变量取值范围。枚举类型定义了一组可能的值,每个值都被称为一个枚举成员。 方法 在Uni

    相关 C语言enum(

    枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。 > 枚举语法定义格式为: > > enum 枚举名 {枚举元素1,枚举元素2,……}; 接

    相关 C语言enum()

    枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。 枚举语法定义格式为: enum 枚举名 \{枚举元素1,枚举元素2,……\}; 接下来我们举个例子,

    相关 C# 类型 Enum

    枚举作用 1. 【统一】规范数据名称,让程序员【调用】数据名称,而非自己编写数据名称。 2. 耦合性高,扩展性差。修改数据只需要在枚举中修改,就可以影响全局的枚举值。