列舉型別

霍北北發表於2024-04-03

列舉型別

目錄
  • 列舉型別
    • 1. 定義
    • 2. 列舉元素的值
      • 2.1 預設
      • 2.2 全部賦值
      • 2.3 部分賦值
    • 3. 列舉變數的定義方式
      • 3.1 先定義列舉型別,再定義列舉變數
      • 3.2 同時定義列舉型別和列舉變數
      • 3.3 忽略列舉名,直接定義列舉變數
      • 3.4 結合typedef關鍵字
    • 4. 總結

1. 定義

列舉是用來代表整數常量的符號

預設形式:

enum 列舉名 {列舉元素, ...};

2. 列舉元素的值

2.1 預設

列舉元素的值,預設從0開始,逐項+1

// 從SUNDAY開始,值分別是0,1,……,6
enum DAY {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY,FRIDAY, SATURDAY};

2.2 全部賦值

// 列舉元素的值以賦值結果為準
enum DAY {
    SUNDAY = 20, 
    MONDAY = 30, 
    TUESDAY = 100, 
    WEDNESDAY = 1024, 
    THURSDAY = 580,
    FRIDAY = 699, 
    SATURDAY = 21
};

2.3 部分賦值

與預設情況相同,在列舉元素無賦值的情況下,值預設為上一列舉元素的值+1,首個列舉元素的值預設為0。

// SUNDAY = 0,TUESDAY = 31,WEDNESDAY = 32
// 其餘列舉元素的值以賦值結果2為準
enum DAY {
    SUNDAY, 
    MONDAY = 30, 
    TUESDAY, 
    WEDNESDAY, 
    THURSDAY = 580,
    FRIDAY = 699, 
    SATURDAY = 21
};

3. 列舉變數的定義方式

3.1 先定義列舉型別,再定義列舉變數

// 定義列舉型別
enum DAY {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}; 
// 定義列舉變數
enum DAY day;

3.2 同時定義列舉型別和列舉變數

enum DAY {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
} day; // 已經完成了對於列舉變數day的定義

3.3 忽略列舉名,直接定義列舉變數

enum {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
} day; // 僅定義了列舉變數day

3.4 結合typedef關鍵字

使用typedef關鍵字,建立了一個新的型別名,簡化了enum型別的宣告,無需再寫enum

typedef enum {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
} DAY;
DAY today = WEDNESDAY; // 無需寫成enum DAY day;

4. 總結

  1. 例子中各列舉元素的值分別是多少?
enum day {
    SUNDAY, 
    MONDAY = 30, 
    TUESDAY, 
    WEDNESDAY, 
    THURSDAY = 580,
    FRIDAY = 699, 
    SATURDAY = 21
};
  1. 請說明列舉型別4種定義方式,並舉出具體的例子。

相關文章