标签:菜单 零基础 编译 int return 没有 har 指定 cas
在某些编程情况下,我们可能会根据某个变量出现多分支情况,我们常使用一个标志变量存储分支的状态,如:
#include <stdio.h>
int main(int argc, char* argv[])
{
int nChoice = -1;
scanf("%d", &nChoice);
switch (nChoice)
{
case 0:
printf("选择0号菜单,运行增加功能……\r\n");
break;
case 1:
printf("选择1号菜单,运行删除功能……\r\n");
break;
case 2:
printf("选择2号菜单,运行查询功能……\r\n");
break;
}
return 0;
}
但是,单纯的数字的可读性并不好,这时,我们可以采用枚举变量,增强可读性。
枚举的关键字是enum,同struct、union类似,我们需要定义出新的枚举类型,再用枚举类型去定义枚举变量。
#include <stdio.h>
enum FLAG_CHOICE{
ADD,
DEL,
QUERY
};
int main(int argc, char* argv[])
{
FLAG_CHOICE myChoice;
return 0;
}
可以看出,使用enum声明类型时,同时需要声明这个类型下支持的各种“状态”。
之后定义的枚举变量,将只能被限定的状态赋值:
#include <stdio.h>
enum FLAG_CHOICE{
ADD,
DEL,
QUERY
};
int main(int argc, char* argv[])
{
FLAG_CHOICE myChoice;
myChoice = ADD; //合法
myChoice = DEL; //合法
myChoice = QUERY; //合法
myChoice = 5; //非法
return 0;
}
使用枚举,可以使得代码的可读性增强:
#include <stdio.h>
enum FLAG_CHOICE{
ADD,
DEL,
QUERY
};
int main(int argc, char* argv[])
{
FLAG_CHOICE myChoice;
scanf("%d", &myChoice);
switch (myChoice)
{
case ADD:
printf("增加功能...\r\n");
break;
case DEL:
printf("删除功能...\r\n");
break;
case QUERY:
printf("查询功能...\r\n");
break;
}
return 0;
}
从以上代码中可以看到
FLAG_CHOICE myChoice;
scanf("%d", &myChoice);
这是可以编译通过的,因为枚举的本质其实就是整型类型。
只不过定义枚举类型后,编译器会做两件事情:
正因为如此,枚举类型声明时,还可以指定数字编号。
enum FLAG_CHOICE{
ADD = 2,
DEL = 1,
QUERY = 0
};
标签:菜单 零基础 编译 int return 没有 har 指定 cas
原文地址:https://www.cnblogs.com/shellmad/p/11695682.html