C语言 枚举类型
#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 型 的變量 selecteddo{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 { Monday = 1, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, End };
enum { MATGEMATICS, ADVANCED_MATHEMATICS = 0 };
運行結果:
是枚舉類型的聲明,它表示了所有可用值的集合。其中,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 型 的變量 selecteddo{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; }運行結果:
總結
- 上一篇: Java 使用List集合实现图书增删改
- 下一篇: C语言 递归实现辗转相除法 和 辗转相减