在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++教材。