在C語言中,列舉是一種方便組織和表示一組相關常數的工具。列舉型別有助於提高程式碼的可讀性和可維護性。本文將介紹C語言列舉的基本概念、語法和用法,以及一些高階技巧。
列舉型別由enum
關鍵字引入,並由一組常數構成。每個常數都稱為列舉常數,它們在列舉中按順序自動賦予整數值。
enum Season {
SPRING, // 0
SUMMER, // 1
AUTUMN, // 2
WINTER // 3
};
在上述範例中,我們定義了一個名為Season
的列舉型別,幷包含四個常數:SPRING
,SUMMER
,AUTUMN
和WINTER
。
它們的預設值分別為0、1、2和3。
我們可以使用列舉常數來宣告變數,併為其賦予列舉中的某個值。
enum Season currentSeason = SUMMER;
在上述範例中,我們宣告了一個名為currentSeason
的變數,並將其賦值為SUMMER
。
這樣,我們就可以通過變數currentSeason
來參照列舉常數。
我們可以使用相等運運算元(==
)來比較列舉常數之間的值是否相等。
if (currentSeason == SPRING) {
printf("It's spring!\n");
} else if (currentSeason == SUMMER) {
printf("It's summer!\n");
} else if (currentSeason == AUTUMN) {
printf("It's autumn!\n");
} else if (currentSeason == WINTER) {
printf("It's winter!\n");
}
在上述範例中,我們使用if
語句根據當前季節輸出相應的訊息。
此外,我們還可以使用switch
語句根據列舉常數執行不同的程式碼塊。
switch (currentSeason) {
case SPRING:
printf("It's spring!\n");
break;
case SUMMER:
printf("It's summer!\n");
break;
case AUTUMN:
printf("It's autumn!\n");
break;
case WINTER:
printf("It's winter!\n");
break;
default:
printf("Invalid season!\n");
break;
}
在上述範例中,根據currentSeason
的值,我們執行不同的程式碼塊。
預設情況下,列舉常數的值是按順序自動賦予的。但是,我們也可以顯式地為列舉常數指定值。
enum Month {
JANUARY = 1,
FEBRUARY,
MARCH,
APRIL,
MAY,
JUNE
};
在上述範例中,我們定義了一個名為Month
的列舉型別,併為JANUARY
指定了值1。其餘的常數依次遞增。
列舉常常被用作函數的引數和返回值,以便傳遞和表示一組選項或狀態。
enum Result {
SUCCESS,
FAILURE
};
enum Result performOperation() {
// 進行操作...
if (/* 操作成功 */) {
return SUCCESS;
} else {
return FAILURE;
}
}
在上述範例中,我們定義了一個列舉型別Result
,用於表示操作的結果。函數performOperation()
執行某個操作,並根據操作的成功與否返回相應的列舉常數。
C語言中,列舉也可以巢狀在其他結構中,以建立更復雜的資料結構。
struct Person {
char name[20];
enum Gender {
MALE,
FEMALE
} gender;
};
在上述範例中,我們定義了一個結構體Person
,其中包含一個名為gender
的巢狀列舉型別Gender
。
通過這篇文章,我們學會了
1、列舉的基本概念
2、列舉的常見用法和使用技巧