枚举作为函数参数的实际目的是什么?

时间:2013-05-29 08:46:38

标签: c enums

到目前为止,我认为如果函数参数是enum,那么它只能保存enum中定义的值。但事实证明这是错误的。

代码:

typedef enum
{
    a = 0,
    b,
    c
} X;

typedef enum
{
    e = 3
} Y;

void fn (X var)
{
    printf ("%d",var);
}

int main()
{
    fn (e);
    return 0;
}

函数fn()接受了值e,其输出为3.为什么会发生?

1 个答案:

答案 0 :(得分:3)

在需要枚举的地方可以使用任何整数值。编译器不验证整数值。

它们基本上是一种方便的方法,可以将有意义的名称分配给代码中显示为任意数字的名称。