当我编译这段代码时,它给了我
“[错误]未知类型名称'天'”。我做错了什么?
#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;
}
答案 0 :(得分:4)
如果是C,你必须写:
enum days dayVariable;
...
dayVariable = (enum days)k;
如果您希望days
成为类型名称,请键入def it:
typedef enum {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday} days;
除此之外,你在printf中使用了错误的格式说明符。
P.S。
请记住,C和C ++是不同的语言。从您的代码和误解中可以明显看出,您来自某些C ++背景。试着拿起一本关于C编程的书。
答案 1 :(得分:3)
枚举不是字符串。实际上星期一= 0,星期二= 1等。如果你想打印字符串,你可以这样做:
char *days[] = {"Monday", "Tuesday", ... "Sunday"};
printf("%s", days[k]);
答案 2 :(得分:1)
在C中,枚举与普通类型不在同一名称空间中。如果要定义类型为枚举的变量,可以执行以下操作:
enum days dayVariable;
或者,您可以为枚举定义标准类型。有很多类似的方法可以做到这一点;这是一个:
typedef enum {
/* ... */
} days;
答案 3 :(得分:1)
这也不会编译:
dayVariable=days(k);
days
不是函数,而在C中,一般类型名称(您似乎期望days
)也不是函数。你可能意思是:
dayVariable = (enum days) k;
换句话说,使用简单的强制转换为正确的类型名称。