C/C++進階學習筆記(一) 枚舉類型

爲了在C/C++的學習之路中留下更深刻的印象,從現在開始,我將着手寫一系列的C/C++進階學習筆記,文章中不涉及深層次的應用,不作教科書式的詳解,只寫出基本的用法和介紹,以後在學習和工作過程中有用到的功能再作補充,保證介紹的簡潔、實用和高效

歡迎到 我的博客 查看更詳細的內容

枚舉類型

介紹

有時候在開發中需要定義一系列的有規律的常量

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

這樣的寫法比較重複累贅,我們可以用枚舉類型簡化這一過程

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

與上述的反覆#define等價,都定義了一系列的常量變量,這就是枚舉類型的主要作用,默認第一個常量從0開始,可以人爲賦值每一個常量的值

用法

  1. 聲明和定義分開

        enum DAY
        {
            Mon = 1,Tue,Wed,Thu,Fri,Sat,Sun
        };
    
        ......
    
        enum DAY yesterday;
        enum DAY today;
    
  2. 聲明和定義同時進行

    enum        //標號DAY可以省略
    {
     Sat,
     Sun = 0,
     Mon,
     Tue,
     Wed,
     Thu,
     Fri
    } today; //today的類型爲枚舉型enum DAY
    enum DAY { Mon=1, Tue, Wed, Thu, Fri Sat, Sun} today; //聲明同時定義

示例

環境 Windows 7 旗艦版 Visual Studio 2015

// 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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章