枚举数据类型为int类型?

时间:2015-10-20 03:40:00

标签: c initialization translate

我是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)

但我收到错误。任何帮助表示赞赏。

1 个答案:

答案 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;
}