C語言中的枚舉與宏定義 及其不同之處

C語言的枚舉與宏定義

有人可能會覺得這個太easy了,本來也沒想寫這篇文章,但是想想覺得有必要用自己的語言組織一下記下來,跟學習swift的枚舉做類比,好理解一些。


一、枚舉


1. what:

1)它看起來是這樣的:


enum week
{
    MON,
    TUES,
    WED,
    THUR,
    FRI,
    SAT,
    SUN,
};

2)是符號常量的集合

枚舉中定義的符號,其本質就是爲int型的常量

枚舉定義時一般爲全局

3)是“值替身”。

用符號來代替數字,用符號來識別


2. why:爲什麼需要枚舉

1)對數字進行符號化

1.用數字:當程序代碼多了以後,單純使用數字不能讓程序員馬上理解該數字代表的含義,如看到數字0,可能需要查文檔才知道具體意義;

2.用枚舉:意義明顯,如看到MON能馬上理解是代表星期一的數字

2)不是必須的,與宏定義類似

與宏定義可互換

3. how:

枚舉的定義與使用可參考這篇文章:點擊打開鏈接




二、宏定義


1. what:

1)它看起來是這樣的:

#define MON   0
#define TUES  1
#define WED   2
#define THUR  3
#define FRI   4
...

2. why:

1)宏定義類似全局變量,可以改一處,則全部都改掉,方便修改和管理,不用一個一個的去改。

2)在程序預處理時,是將標識符原封不動地替換成標識符後面的變量

3. how:

可參考這篇文章:宏定義方法總結




三、枚舉與宏定義區別:


1)枚舉是“整”的: 多個有關聯的符號放在一個枚舉中(如一週有7天,一年的12個月等)。

      宏是“散”的

2)同一程序裏,枚舉定義的符號不能重名

3)                                         枚舉                                        宏

作用時期:             程序運行時                        預處理(替換代碼段)

存儲形式:             全局變量->數據段             代碼段

  消耗CPU

4)什麼情況下更適合用枚舉?

當需要定義的變量是一個有限集合的時候













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