第一篇:容易遺忘的「枚舉」

前言

       在C/C++代碼中,常常看到枚舉類型的變量。那麼枚舉類型有啥用?枚舉類型具體又該如何使用?ios

       本文將結合具體實例爲你解答。編程

枚舉類型有啥用?

       在編程中,咱們常常須要爲某些屬性定義一組可選擇的值。打個比方,我如今要編寫一個文件處理程序,那麼我就要先定義一個狀態變量,而後用一組值來表示文件的打開,關閉等狀態。app

       咱們很容易直觀地想到如下兩種作法:ui

 1 /*
 2  *  用宏
 3 */
 4 #define input 0
 5 #define output 1
 6 
 7 /*
 8  *  用常變量
 9 */
10 const input 0
11 const output 1

       這樣的作法可行,可是有缺點,那就是沒有體現出同一類狀態變量的描述宏/值之間的關聯性。而枚舉類型則很好的解決了這個問題。spa

枚舉類型怎麼用?

       首先看一個枚舉定義的示例:code

1 enum Fruit {
2     apple,
3     orange,
4     pear,
5 };

       這個例子定義了一個名爲Fruit的枚舉類型,它包含三個描述值 - apple,orange,pear。其中第一個值(apple)默認等價於0,第二個(orange)1,依此類推。blog

       這幾個描述值能夠像通常的常量表達式般使用,請看下面示例:input

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 enum Fruit {
 6     apple,
 7     orange,
 8     pear,
 9 };
10 
11 int main()
12 {
13     cout << "apple: " << apple << endl;
14     cout << "orange: " << orange << endl;
15     cout << "pear: " << pear << endl;
16 
17     return 0;
18 }

       運行結果:it

      

       但枚舉真正的用途是爲一種狀態變量提供一組相關聯的描述值,參考如下代碼:io

#include <iostream>
 
using namespace std;
 
enum Fruit {
    apple,
    orange,
    pear,
};

int main()
{
    /*
     * 定義枚舉變量jacklike和mikelike
    */
    Fruit jacklike;
    Fruit mikelike;
 
    /*
     * 將指定狀態值賦給枚舉變量
    */
    jacklike=apple; 
    mikelike=orange;
 
    /*
     * 程序根據枚舉變量的狀態值做出不一樣處理
    */
    if (jacklike == apple) {    
        cout << "Jack like apple" << endl;
    }
    if (mikelike == apple) {
        cout << "Mike like apple." << endl;
    }
 
    return 0;
}

小結

       必需要在具體編程中多多嘗試使用枚舉,才能真正掌握枚舉。同時一些關於枚舉的語法細則我沒有列出,想全面瞭解請查閱相關C++教材。

相關文章
相關標籤/搜索