en中的枚举?它们可以用于存储

时间:2016-02-18 02:45:49

标签: c enums enumeration

我试图找到如果我在枚举中有2个变量会发生什么 我给它分配了一个值。 我想了解何时为c_type赋值,哪一个使用C1或C2?

我有以下代码:

typedef enum {
    C1 = 0,
    C2,
} c_type;

typedef struct A_a {
    c_type store;
} A;

FuncABC(int val)
{
    A a1;
    a1.store = val; /here store has C1 and C2, which one gets used here?
}

请让我知道。我知道上面的代码在逻辑上用C语言。 但是,需要澄清作业。

2 个答案:

答案 0 :(得分:3)

您感到困惑的是a1.store会存储C1C2

实际a1.store可以是C1C223255或其他是val的值。

回到C标准,enum变量可以存储超出enum类型值范围的值。

您也可以参考此Enumeration object set to a value not equal to any of its respective enumeration constants

答案 1 :(得分:0)

这是未定义的行为。您的代码最可能的结果是崩溃,因为您正在取消引用未初始化的指针。