如何通过 C 中的关联数字访问枚举中的元素?
How do I access the an element in an enumeration by the associated number in C?
我在 C 中有一个枚举如下:
enum menu
{
PASTA,
PIZZA,
DIET_COKE,
MOJITO,
};
由于我没有明确提到这些元素对应的整数值,所以分别给它们赋值0、1、2、3。
假设我决定向我的枚举中添加另外 100 个左右的项目。
那么有没有办法通过它们关联的数字来访问这些元素呢?
(比如我们如何使用数组的索引访问数组元素)
枚举只是 C 中的命名常量。与您使用
声明常量相同
#define PASTA 0
#define PIZZA 1
#define DIET_COKE 2
#define MOJITO 3
例如。
使用枚举,编译器会自动为您完成。因此,除非您为枚举创建一个数组,否则无法在 C 中以您想要的方式访问枚举。
示例更新
一个示例用例,展示如何实现一个字符串列表,并伴随枚举作为索引:
#include <stdio.h>
char *stringsOfMenu[] = {
"Pasta",
"Pizza",
"Diet Coke",
"Mojito"
};
enum menuIndex {
PASTA,
PIZZA,
DIET_COKE,
MOJITO
};
int main(void) {
// For example you show menu on the screen first
puts("Please select");
puts("-------------");
for(int i = 0; i <= MOJITO; i++) {
printf("[%d] - %s\n", i+1, stringsOfMenu[i]);
}
putchar('\n');
printf("Make a choice: ");
int choice = -1;
scanf("%d", &choice);
if(choice <= 0 || choice > MOJITO+1) {
puts("Not a valid choice");
return 1;
}
// Note that the choice will contain the counting number.
// That's why we convert it to the index number.
printf("Your choice %s is in progress, thank you for your patience!\n", stringsOfMenu[choice-1]);
return 0;
}
这是一个输出演示:
Please select
-------------
[1] - Pasta
[2] - Pizza
[3] - Diet Coke
[4] - Mojito
Make a choice: 2
Your choice Pizza is in progress, thank you for your patience!
我在 C 中有一个枚举如下:
enum menu
{
PASTA,
PIZZA,
DIET_COKE,
MOJITO,
};
由于我没有明确提到这些元素对应的整数值,所以分别给它们赋值0、1、2、3。
假设我决定向我的枚举中添加另外 100 个左右的项目。 那么有没有办法通过它们关联的数字来访问这些元素呢? (比如我们如何使用数组的索引访问数组元素)
枚举只是 C 中的命名常量。与您使用
声明常量相同#define PASTA 0
#define PIZZA 1
#define DIET_COKE 2
#define MOJITO 3
例如。
使用枚举,编译器会自动为您完成。因此,除非您为枚举创建一个数组,否则无法在 C 中以您想要的方式访问枚举。
示例更新
一个示例用例,展示如何实现一个字符串列表,并伴随枚举作为索引:
#include <stdio.h>
char *stringsOfMenu[] = {
"Pasta",
"Pizza",
"Diet Coke",
"Mojito"
};
enum menuIndex {
PASTA,
PIZZA,
DIET_COKE,
MOJITO
};
int main(void) {
// For example you show menu on the screen first
puts("Please select");
puts("-------------");
for(int i = 0; i <= MOJITO; i++) {
printf("[%d] - %s\n", i+1, stringsOfMenu[i]);
}
putchar('\n');
printf("Make a choice: ");
int choice = -1;
scanf("%d", &choice);
if(choice <= 0 || choice > MOJITO+1) {
puts("Not a valid choice");
return 1;
}
// Note that the choice will contain the counting number.
// That's why we convert it to the index number.
printf("Your choice %s is in progress, thank you for your patience!\n", stringsOfMenu[choice-1]);
return 0;
}
这是一个输出演示:
Please select
-------------
[1] - Pasta
[2] - Pizza
[3] - Diet Coke
[4] - Mojito
Make a choice: 2
Your choice Pizza is in progress, thank you for your patience!