C 为什么这个枚举不起作用?
当我编译这段代码时,它给了我 “[错误]未知类型名称‘天’”。我做错了什么C 为什么这个枚举不起作用?,c,enumeration,C,Enumeration,当我编译这段代码时,它给了我 “[错误]未知类型名称‘天’”。我做错了什么 #include <stdio.h> int main(void){ int k=0; enum days {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}; days dayVariable; printf("Enter number of the day: "); scanf("%d",&k); dayVariable=
#include <stdio.h>
int main(void){
int k=0;
enum days {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};
days dayVariable;
printf("Enter number of the day: ");
scanf("%d",&k);
dayVariable=days(k);
printf("%s", dayVariable);
return 0;
}
#包括
内部主(空){
int k=0;
枚举日{星期一、星期二、星期三、星期四、星期五、星期六、星期日};
日变量;
printf(“输入日期:”);
scanf(“%d”和“&k”);
dayVariable=天数(k);
printf(“%s”,dayVariable);
返回0;
}
枚举不是字符串。实际星期一=0、星期二=1等。如果要打印字符串,可以执行以下操作:
char *days[] = {"Monday", "Tuesday", ... "Sunday"};
printf("%s", days[k]);
如果是C,你必须写:
enum days dayVariable;
...
dayVariable = (enum days)k;
如果希望days
作为类型名称,请键入def:
typedef enum {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday} days;
除此之外,您在printf中使用了错误的格式说明符
附言
请记住,C和C++是不同的语言。从代码和误解中可以看出,你来自C++背景。试着读一本关于C编程的书。在C中,枚举与普通类型不在同一名称空间中。如果要定义类型为该枚举的变量,可以执行以下操作:
enum days dayVariable;
或者,可以为枚举定义标准类型。有许多类似的方法可以做到这一点;这里有一个:
typedef enum {
/* ... */
} days;
这也不会编译:
dayVariable=days(k);
days
不是一个函数,在C语言中,一般类型名称(您似乎期望days
是)也不是函数。你的意思可能是:
dayVariable = (enum days) k;
换句话说,使用一个简单的强制转换到正确的类型名。请参阅相关:(枚举天数)k;看起来很奇怪。我们是否将整数转换为天?你能再解释一下吗?