enum

另外一種定義符號常數的方法,是用 enum 語法。 但是此時只能定義 int 型態所容許的數值。 例如說

    enum {ZERO, ONE, TWO, THREE, FOUR};
效果就像是說了
#define ZERO 0
#define ONE 1
#define TWO 2
#define THREE 3
#define FOUR 4
那些寫在 enum 裡面的字,都成為 enumeration names。 這些名字就相當於變數名,所以不能夠說
    enum {ZERO, ONE, TWO, THREE, FOUR};
    int ONE=1;
這樣就相當於重複宣告了同樣名字的變數。

enum{ }; 裡面出現的字,如果沒有定義它的值, 就自動設定為前一個字的值 +1。如果第一個字沒有定義它的值,就令它是 0。 所以,以下語句

    enum {Sun, Mon, Tue, Wed, Thr, Fri, Sat};
定義了 Wed=3,而
    enum {Jan=1, Feb, Mar, Apr, May, Jun, Jul,
          Aug, Sep, Oct, Nov, Dec};
就定義了 Jun=6,而
    enum {NUL, BEL=7, BS, HT, LF, VT, FF, CR, ESC=27, SP=32};
就定義了 NUL=0 (null)、HT=9 (horizontal tab)、 CR=13 (carriage return)。 上面這一句話,將常用的 ASCII 控制碼都定義成了符號常數。 因此,在 mywc.c 中,我們可以將
    if (c == ' ' || c == '\t' || c == '\n')
改寫成
    if (c == SP || c == HT || c == LF)
這樣或許提高了原始碼的可讀性。

習題

[ 前一節 ]‧[ 後一節 ]‧[ 回目錄 ]



注意:此處所有文件均為原著,個別的版權宣告日後會一一公布, 整體版面設計亦尚未完成。但仍請勿抄襲文字與圖片,以免觸犯著作權法。

Created: Apr 22, 2000
Last Revised: Apr 22, 2000
© Copyright 2000 Wei-Chang Shann 單維彰

shann@math.ncu.edu.tw