#include <stdio.h>
enum week { End, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
void monday(void){
puts("星期一");
}
void tuesday(void){
puts("星期二");
}
void wednesday(void){
puts("星期三");
}
void thursday(void){
puts("星期四");
}
void friday(void){
puts("星期五");
}
void saturday(void){
puts("星期六");
}
void sunday(void){
puts("星期天");
}
enum week select(void){
int tmp;
do {
printf("0. 結束, 1. 星期一, 2. 星期二, 3. 星期三, 4. 星期四, 5. 星期五, 6. 星期六, 7. 星期天\n");
puts("請選擇:");
scanf("%d", &tmp);
}while (tmp < End || tmp > Sunday);
return tmp;
}
int main(void){
enum week selected; // 聲明 enum week 型 的變量 selected
do{
switch (selected = select()){
case Monday :
monday();
break;
case Tuesday :
tuesday();
break;
case Wednesday :
wednesday();
break;
case Thursday :
thursday();
break;
case Friday :
friday();
break;
case Saturday :
saturday();
break;
case Sunday :
sunday();
break;
}
}while (selected != End);
return 0;
}
運行結果:
enum week { End, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday };
是枚舉類型的聲明,它表示了所有可用值的集合。其中,week 被稱爲枚舉名。寫在{}中的 End, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday 是枚舉常量。
注:枚舉名不是類型名。類型名稱不是 week 型,而是 enum week 型。
如果在沒有賦值給枚舉常量賦值的情況下,枚舉常量默認對應的值是從0開始按順序爲枚舉常量定義了相應的整數值。實際上,這些值也能根據需要任意設置,只要在枚舉常量的名稱後面寫上賦值運算符 “=” 和值就行了。
enum week { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, End };
通過賦值運算符 “ = ” 賦值的枚舉常量,其值爲給定值,沒有給定值的枚舉常量,其值爲前一個枚舉常量加1。
#include <stdio.h>
enum week { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, End };
void monday(void){
puts("星期一");
}
void tuesday(void){
puts("星期二");
}
void wednesday(void){
puts("星期三");
}
void thursday(void){
puts("星期四");
}
void friday(void){
puts("星期五");
}
void saturday(void){
puts("星期六");
}
void sunday(void){
puts("星期天");
}
enum week select(void){
int tmp;
do {
printf("1. 星期一, 2. 星期二, 3. 星期三, 4. 星期四, 5. 星期五, 6. 星期六, 7. 星期天, 8. 結束\n");
puts("請選擇:");
scanf("%d", &tmp);
}while (tmp < Monday || tmp > End); // 將 End 在枚舉類型末端,星期一 位於首端
return tmp;
}
int main(void){
enum week selected; // 聲明 enum week 型 的變量 selected
do{
switch (selected = select()){
case Monday :
monday();
break;
case Tuesday :
tuesday();
break;
case Wednesday :
wednesday();
break;
case Thursday :
thursday();
break;
case Friday :
friday();
break;
case Saturday :
saturday();
break;
case Sunday :
sunday();
break;
}
}while (selected != End);
return 0;
}
運行結果:
enum { MATGEMATICS, ADVANCED_MATHEMATICS = 0 };
程序中的枚舉名可以省略,多個枚舉常量也允許具有相同的值。
#include <stdio.h>
enum { MATGEMATICS, ADVANCED_MATHEMATICS = 0 };
void mathematics(void){
puts("數學");
}
void advanced_mathematics(void){
puts("高等數學");
}
int main(void){
int tmp;
puts("請選擇:");
scanf("%d", &tmp);
switch (tmp){
case MATGEMATICS :
mathematics();
break;
}
switch (tmp){
case ADVANCED_MATHEMATICS :
advanced_mathematics();
break;
}
return 0;
}
運行結果: