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 型 的變量 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;
}

運行結果:
在這裏插入圖片描述

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