在 C 中使用 enum 和 int 变量的区别

Ami*_* A. 4 c int enums integer constants

之间有什么区别

enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};
enum week day = Wed; 
Run Code Online (Sandbox Code Playgroud)

enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};
int day = Wed;
Run Code Online (Sandbox Code Playgroud)

在 C?

我找不到使用类型变量而enum不是使用常规int.

Kon*_*lph 8

好处是使用 aenum使您的意图更加清晰,无论是阅读您的代码的人还是编译器。例如,如果您使用具有不完整switch案例的枚举,任何中途体面的编译器都会警告您:

switch (day) {
    case Mon: printf("Monday\n"); break;
    case Tue: printf("Tuesday\n"); break;
}
Run Code Online (Sandbox Code Playgroud)

这里 GCC (with -Wall) 发出:

警告:枚举值“Wed”未在开关 [-Wswitch] 中处理

7 |     switch (day) {
  |     ^~~~~~
Run Code Online (Sandbox Code Playgroud)

如果类型dayint,您将不会收到这个非常有用的警告。

  • 也许值得注意的是:只有当省略“default”情况时才会抛出此警告,而当省略时则不会。 (2认同)