C语言之枚举

简介:

1:什么是枚举

  枚举在C语言中其实就是一些符号常量集,简单来说,枚举就是定义了一些符号(字符串),这些字符的本质就是int类型的常量,每个符号和一个常量相绑定,那么这个符号就成为了一个自定义的识别码,对编译器来说对枚举的认知就是符号常量所绑定的那个int类型的数。直白来讲,枚举就是自己定义一些符号,然后这些符号对应int类型的数,对于程序员来讲,这些符号可以帮助程序员理解代码,而对于编译器来讲,编译器是不认识我么定义的枚举符号的,编译器只认识这个枚举变量所对于的int类型的数

2:枚举的作用


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
enum  ER
{
     error;
     right;
}
int  E_or_R( int  a ,  int  b)
{
     if (a>b)
     {
         return  right;
     }
     else
     {
         return  error;
      }
     
}
 
int  main( void )
{
     printf ( "plese input a & b \n" );
     scanf ( "%d%d" ,&a,&b);
     int  c = E_or_R(a , b);
     if (c==right)
     {
         printf ( "a>b \n" );
     }
     else (c==error)
     {
         printf ( "a<=b \n" );
     }
     return  0;
}

如上面的代码所示,我们通过枚举元素right和error来判断函数E_or_R()返回值,这样就可以很直观地看清楚代码,(因为一般人觉得函数执行成功返回1,函数执行失败返回1,但是不免有人写代码时会把函数执行成功返回0,函数执行失败返回1)。

3:枚举和宏定义的区别

    我们知道,宏定义也是用来标示一些参数,让程序员能更直观地看懂代码的方法,但是枚举和宏定义又有区别,比如宏定义是分散定义的,而采用枚举则可以集中定义在一个枚举变量里面,比如我现在要用 SUN MON 等来定义一周的星期

采用红定义的方法是

1
2
3
4
#define  SUN 0 
#define  MON 1
......
#define   SAT 6

而采用枚举的方法

1
2
3
4
5
6
7
8
9
10
enum  week
{
     SUN,         // SUN = 0
     MON,         // MON = 1;
     TUE,
     WEN,
     THU,
     FRI,
     SAT,
};

总上所述:

  当我们要定义的常量是一个有限集合时(譬如一星期有7天,譬如一个月有31天,譬如一年有12个月····),最适合用枚举。(其实宏定义也行,但是枚举更好)


本文转自 菜鸟养成记 51CTO博客,原文链接:http://blog.51cto.com/11674570/1862821

相关文章
|
存储 安全 编译器
C语言(13)----联合和枚举
C语言(13)----联合和枚举
247 1
|
C语言
【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】
本文档介绍了编程任务的详细内容,旨在运用枚举法求解硬币等额 - 循环控制语句(`for`、`while`)及跳转语句(`break`、`continue`)的使用。 - 循环嵌套语句的基本概念和应用,如双重`for`循环、`while`嵌套等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台将对编写的代码进行测试,并给出预期输出结果。 5. **通关代码**:提供完整的代码示例,帮助理解并完成任务。 6. **测试结果**:展示代码运行后的实际输出,验证正确性。 文档结构清晰,逐步引导读者掌握循环结构与嵌套的应用,最终实现硬币兑换的程序设计。
360 19
|
C语言
【C语言程序设计——枚举】得到 3 种不同颜色的球的可能取法(头歌实践教学平台习题)【合集】
本关任务要求从红、黄、蓝、白、黑五种颜色的球中,每次取出3个不同颜色的球,列举所有可能的排列情况。通过定义枚举类型和使用嵌套循环语句实现。枚举类型用于表示球的颜色,循环语句用于生成并输出所有符合条件的排列 编程要求:在指定区域内补充代码,确保输出格式正确且完整。测试说明:平台将验证代码输出是否与预期一致,包括每种排列的具体顺序和总数。 示例输出: ``` Output: 1 red yellow blue 2 red yellow white ... 60 black white blue total: 60 ```
460 4
|
存储 编译器 C语言
c语言回顾-联合和枚举
c语言回顾-联合和枚举
|
存储 C语言 C++
深入C语言,发现多样的数据之枚举和联合体
深入C语言,发现多样的数据之枚举和联合体
252 0
深入C语言,发现多样的数据之枚举和联合体
|
存储 编译器 C语言
【C语言篇】自定义类型:联合体和枚举详细介绍
像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。
253 1
|
存储 安全 编译器
深入理解C语言中的枚举
深入理解C语言中的枚举
|
存储 编译器 C语言
【C语言】自定义类型:联合与枚举的简明概述
【C语言】自定义类型:联合与枚举的简明概述
295 0
|
C语言
C语言学习记录——枚举(定义、与结构体的区别、优点)
C语言学习记录——枚举(定义、与结构体的区别、优点)
483 3