C语言枚举

时间:2020-02-23 14:32:03  来源:igfitidea点击:

希望大家一切都好。
在本文中,我们将讨论C中的枚举。

什么是枚举?

C中的枚举是用户定义的数据类型。
因此,我们可以根据用户/系统的需求自定义数据并将其存储到其中。

枚举将字符串或者字符值(即枚举标签)分配给整数数据值。
对于每个字符串文字或者值,都有一个分配给它的整数索引,如下所示。

C中的枚举

像C数组一样,枚举从0开始索引值。

因此,枚举可帮助我们简化代码并提高程序的可读性。

现在,让我们了解C编程中的枚举结构。

C中的枚举语法

因此,现在让我们看一下C中的Enum声明:

enum enum-name {enumerators};

  • 枚举名称:将为所有与枚举相关的任务引用一个有效的名称。

  • "枚举数":命名整数文字。

为了获取并显示存储在枚举中的数据,我们需要使用以下命令将一个对象与其关联:

enum enum-name object;

此外,要显示存储在枚举中的任何数据值,我们可以将对象与指定的字符串文字相关联,如下所示:

object = enumerator;

现在让我们通过一些示例实现上述枚举语法。

示例C中枚举的用法

在下面的示例中,我们已将月份的名称存储在枚举中,并使用分配给"年份"的对象访问了"十二月"的值。

#include<stdio.h> 

enum year{Jan, Feb, Mar, Apr, May, Jun, July, Aug, Sep, Oct, Nov, Dec}; 

void main() 
{ 
	enum year obj; 
	obj = Dec; 
	printf("The value of Dec:\n%d",obj); 
}

输出:

The value of Dec:
11

现在,我们创建了一个工作日的枚举,并使用for循环访问分配给它的每个值。

#include<stdio.h> 

enum Week_day{Mon, Tue, Wed, Thur, Fri, Sat, Sun};

int main()
{
  for (int x=Mon; x<=Sun; x++)       
      printf("Day: %d\n", x); 
  return 0;
}

输出:

Day: 0                                  
Day: 1
Day: 2
Day: 3
Day: 4
Day: 5
Day: 6                                                                                                                        

在枚举中,如果我们为某些名称或者文字分配特定的整数值,则所有其他未分配的名称将具有一个值,该值将是先前名称的值加1。

看看下面的例子。

#include<stdio.h> 

enum Week_day{Mon=10, Tue, Wed, Thur, Fri, Sat, Sun}; 
int main()
{
  
  for (int x=Mon; x<=Sun; x++)       
    printf("Month: %d\n", x); 
  return 0;
}

我们为" Mon" = 10分配了一个值,所有其余枚举文字的值都取其值为前一个名称的值加1。

输出:

Month: 10
Month: 11
Month: 12
Month: 13
Month: 14
Month: 15
Month: 16

枚举中的多个名称/字符串文字可以具有相似的值或者分配给它们的相同值。

让我们看下面的示例以验证上面的语句。

#include <stdio.h> 
enum switch_value {YES = 1, NO = 0, NEVER = 0}; 

int main() 
{ 
  printf("YES: %d\t, NO: %d\t, NEVER: %d", YES, NO, NEVER); 
  return 0; 
}

输出:

YES: 1	, NO: 0	, NEVER: 0