大家好,我是電源漫談,很高興和各位一起分享我的第68篇原創文章,喜歡和支持我的工程師,一定記得給我點贊、收藏、分享。
枚舉類型是經常在代碼中看到的變量類型,本文通過簡要介紹及測試,解析一下這種類型的變量的基本概念。
一.枚舉類型的概念
首先看一下枚舉類型的概念,一般來說,枚舉類型是一個用戶創建的有限范圍的整數類型,本質上一個整數int數據類型,但是它僅僅包含一些指定的值的列表,而這些值都用符號常量來表示。同樣的,類似于其它變量類型的定義,這些符號常量會和那些具有同樣類型的枚舉變量一起使用。
二.創建枚舉類型及變量
具體如何創建一個枚舉類型呢?我們可以創建一個有序列表的常數表,這個常數表中每一個常數標簽值都比前一個值大1,第一個數據是0,這是默認的情況。
圖1 枚舉類型語法定義
圖2 枚舉類型的示例
如上圖2的示例中,我們定義了一個weekday這樣一個枚舉變量,其中包含七個常數標簽,SUN,MON,TUE,WED,THR,FRI,SAT這七個常數標簽。默認情況下,它們的值為從0到6的整數。
實際上這里有一種特殊情況,任何一個常數標簽,都可以指定為一個具體的值,而后面跟隨的標簽都會在此基礎上順序增加1,如圖3所示。
圖3 特殊指定常數標簽的值
接下來,我們再說一下枚舉變量的定義的方式,一般可以和枚舉類型一起寫,也可以單獨去寫變量的定義,如下圖4參考。
圖4 枚舉變量的定義方式
圖5 變量定義的方式示例
上圖中示例中,第一個例子是定義變量和定義類型放在一起方式,第二個例子是在定義了類型后,就像普通變量一樣,單獨定義了變量。
圖6 不寫類型名直接定義變量名的方式
在實際使用枚舉類型時,也可以不寫類型名,但是這種情況需要將類型定義和變量定義放在一起寫。
圖7 變量的值的使用
當定義了枚舉類型,以及枚舉變量后,對于變量的值可以直接使用任何已經包含進去的常數符號,當然也可以使用具體的整數,這個在代碼中都是識別的,如圖7所示。
三.枚舉變量實測
這里我們定義一個枚舉變量FilterType,及定義一個枚舉變量filter,代碼中其它部分功能,由于篇幅所限,我們此處不詳述。
圖8 定義枚舉類型及變量
圖9 調試代碼查看常數標簽
將枚舉變量filter賦值一個常數標簽,HIGHPASS,我們在調試結果中查看其值。
圖10 常數標簽的值的顯示
在上述結果中,我們可以看出HIGHPASS的值為2,BANDSTOP,LOWPASS,HIGHPASS,BANDPASS的值相應為0,1,2,3滿足期望的定義。
此處將filter變量定義為HIGHPASS時,filter=HIGHPASS;
則可以在串口窗口中得到如下結果。
圖11 HIGHPASS打印輸出
將filter變量定義為LOWPASS時,filter=LOWPASS;
則可以在串口窗口中得到如下結果。
圖12 LOWPASS打印輸出
以上結果均符合代碼設置,通過switch case打印了相關的枚舉常數值。
前述部分,我們提到用戶可以直接指定常數標簽的值,這里我們也測試一下。
圖13 靈活定義常數標簽的值
圖14 調試代碼查看枚舉標簽常數值
圖15 常數標簽值的查看
通過調試窗口,我們可以看到,人為定義PAUL為4,則BILL為5,人為定義GARY為7,則WEB和BABY為8及9,符合期望的定義,第一個數據ROB還是0.
總結,使用枚舉的好處,可以讓代碼的可讀性更好,更方便維護,當需要增加額外的常數表標簽值時,可以直接在常數枚舉類型列表中增加,而不用更改其它部分的代碼。