2

到目前为止,我认为如果函数参数是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。为什么会发生这种情况?

4

1 回答 1

3

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

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

于 2013-05-29T08:56:40.687 回答