為什麼使用列舉
阿新 • • 發佈:2018-12-22
一直認為列舉是很雞肋的東西,直到今天才知道原來它也很有用...
#include <cstdio>
enum open_mode {read,write,create};
enum aenum{zero};
void filefunction(open_mode mode)
{
switch(mode){
case read:
printf("read only\n");
break;
case write:
printf("write only\n");
break;
case create:
printf("create it\n");
break;
default:
printf("fuck error\n");
break;
}
}
int main()
{
int aint=4;
//filefunction(aint); //引發編譯時錯誤:enum.cxx:25:21: error: invalid conversion from 'int' to'open_mode'
open_modemymode = read;
filefunction(mymode);
open_modeyourmode = create;
filefunction(yourmode);
//初始化時,使用整型,將產生編譯時錯誤:
//open_modemode = aint;
open_modeonemode = read;
aenum avalue= zero;
//強制轉換型別,是可以進行賦值的,但是編譯器不保證執行時的正確性(廢話)...
onemode =(open_mode)zero;
open_modelastmode = (open_mode)aint;
filefunction(lastmode);
return0;
}
// 看來列舉的作用在於檢查型別,使得程式更安全...
#include <cstdio>
enum open_mode {read,write,create};
enum aenum{zero};
void filefunction(open_mode mode)
{
switch(mode){
case read:
printf("read only\n");
break;
case write:
printf("write only\n");
break;
case create:
printf("create it\n");
break;
default:
printf("fuck error\n");
break;
}
}
int main()
{
int aint=4;
//filefunction(aint); //引發編譯時錯誤:enum.cxx:25:21: error: invalid conversion from 'int' to'open_mode'
open_modemymode = read;
filefunction(mymode);
open_modeyourmode = create;
filefunction(yourmode);
//初始化時,使用整型,將產生編譯時錯誤:
//open_modemode = aint;
open_modeonemode = read;
aenum avalue= zero;
//強制轉換型別,是可以進行賦值的,但是編譯器不保證執行時的正確性(廢話)...
onemode =(open_mode)zero;
open_modelastmode = (open_mode)aint;
filefunction(lastmode);
return0;
}
// 看來列舉的作用在於檢查型別,使得程式更安全...