C 和枚举

标签 c enumeration

创建 enum 类型的变量有什么好处?我知道如何定义枚举类型和变量 - 但是,我不太明白其中的优势?

#include <stdio.h>
int main(void){

    enum colour{
        white,
        red=2,
        green,
        blue,
        yellow,
        black
    } jacket;

    jacket=50;
    int shirt=yellow;
    printf("%d\n",jacket);
    printf("%d",shirt);

   return 0;
}

在上面的代码中,jacket 被定义为enumshirt 被定义为一个整数。 enum 类型不会阻止我使用未指定为元素的值。 integer 类型也不会阻止我将它分配给 enum 类型的值。

以上代码输出如下:

50
5

这些变量之间的功能差异是什么?

最佳答案

What's the functionaly difference, if any, between these variables?

shirtjacket 都是整数类型但是shirtint 并且是enum color 。后者是一个实现定义的整数类型,例如可以是 unsigned int

例如在gcc中,默认enum colourunsigned int

现在使用 enum 类型的变量有一些优势。例如,一些编译器能够检测并警告不同 enum 类型的混淆。此外,如果您使用 enum 类型的对象作为 switch 语句的控制表达式,一些编译器(例如,gcc -Wswitch) 如果您没有列出所有 enum 常量情况,则能够发出警告。此外,调试器通常能够为 enum 对象值显示一些漂亮的符号。

关于C 和枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25573280/

相关文章:

c - c语言调用函数什么时候加 '&'什么时候不加?

c - 为什么 exit() 函数在 C "never fail"中?

C# - AsEnumerable 示例

Python:枚举值与命名单元

c - 不同源文件之间的外部枚举 - C

c - 设置 C 结构体的成员

用于加密/解密段落的凯撒密码程序

比较两个文件c代码

c# - Entity Framework 6 Code First - 必需的枚举数据类型不起作用

Haskell 处理枚举的方法