我是C的新手,我得到了这些指示:
“将枚举数据类型dfaState转换为int 类型;因此,变量state应该是一个int变量。此外,将枚举值EE,OE,OO和EO分别映射到整数常量0,1,2和3.“
以下是我给出的代码:
#include <stdio.h>
enum dfaState { EE, OE, OO, EO };
enum dfaState state = EE;
char input;
int main(void)
{
//main function here
}
我该如何处理这些说明?我试过这个:
#include <stdio.h>
int EE = 0;
int OE = 1;
int OO = 2;
int EO = 3;
int state;
char input;
int main(void)
但我收到错误。任何帮助表示赞赏。
答案 0 :(得分:0)
来自C11标准:
C11(n1570),§6.7.2.2枚举说明符
每个枚举类型应与char(一个有符号整数)兼容 类型或无符号整数类型。类型的选择是 实现定义,但应能够代表 枚举的所有成员的值。
这意味着在C中,enum底层类型已经是一个整数类型:你的代码已经完成了它应该做的事情:你可以更明确地分别使用值0,1,2,3:
#include <stdio.h>
enum dfaState {
EE = 0,
OE = 1,
OO = 2,
EO = 3
};
enum dfaState state = EE;
int main(void) {
printf("dfaState %d\n", state); // will print "0"
return 0;
}