C/C++进阶学习笔记(一) 枚举类型

来自https://www.hsli.top

为了在C/C++的学习之路中留下更深刻的印象,从现在开始,我将着手写一系列的C/C++进阶学习笔记,文章中不涉及深层次的应用,不作教科书式的详解,只写出基本的用法和介绍,以后在学习和工作过程中有用到的功能再作补充,保证介绍的简洁、实用和高效

枚举类型

介绍

有时候在开发中需要定义一系列的有规律的常量

1
2
3
4
5
6
7
#define Mon 1
#define Tue 2
#define Wed 3
#define Thu 4
#define Fri 5
#define Sat 6
#define Sun 7

这样的写法比较重复累赘,我们可以用枚举类型简化这一过程

1
2
3
4
enum DAY
{
Mon = 1, Tue, Wed, Thu, Fri, Sat, Sun
};

与上述的反复#define等价,都定义了一系列的常量变量,这就是枚举类型的主要作用,默认第一个常量从0开始,可以人为赋值每一个常量的值

用法

  1. 声明和定义分开

    1
    2
    3
    4
    5
    6
    7
    8
    9
    enum DAY
    {
    Mon = 1,Tue,Wed,Thu,Fri,Sat,Sun
    };

    ......

    enum DAY yesterday;
    enum DAY today;
  2. 声明和定义同时进行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    enum        //标号DAY可以省略
    {
    Sat,
    Sun = 0,
    Mon,
    Tue,
    Wed,
    Thu,
    Fri
    } today; //today的类型为枚举型enum DAY
    1
    enum DAY { Mon=1, Tue, Wed, Thu, Fri Sat, Sun} today; //声明同时定义

示例

环境 Windows 7 旗舰版 Visual Studio 2015

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// Enum_Practice.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>

using namespace std;

enum Week
{
Sun = 1, Mon, Tue, Wed, Thu, Fri, Sat
};

int main()
{
enum Week today, yesterday;
int temp;

while (1) {

cout << endl << "Enter day: " << endl;
cin >> temp;

today = (Week)temp; //赋值要强制转换类型



switch (today)
{
case Sun:cout << "Sunday" << endl;
break;
case Mon:cout << "Monday" << endl;
break;
case Tue:cout << "Tuesday" << endl;
break;
case Wed:cout << "Wendsday" << endl;
break;
case Thu:cout << "Thursday" << endl;
break;
case Fri:cout << "Friday" << endl;
break;
case Sat:cout << "Sataday" << endl;
break;
default:cout << "Error" << endl;
break;
};

yesterday = (Week)(today - 1); //赋值要进行类型强制转换

cout << "Yesterday is ";
switch (yesterday)
{
case Sun:cout << "Sunday" << endl;
break;
case Mon:cout << "Monday" << endl;
break;
case Tue:cout << "Tuesday" << endl;
break;
case Wed:cout << "Wendsday" << endl;
break;
case Thu:cout << "Thursday" << endl;
break;
case Fri:cout << "Friday" << endl;
break;
case Sat:cout << "Sataday" << endl;
break;
default:cout << "Error" << endl;
break;
};

}

return 0;
}
如果文章有用,请随意打赏