C++ 枚举变量的默认值是什么?

C++ 枚举变量的默认值是什么?,c++,c,enums,C++,C,Enums,我对c++中的枚举变量有一个问题: type enmu { DAY1 = 1, DAY2, DAY3, DAY4 } DAYS; void main() { DAYS days; } 那么天数的默认值是什么?读取该值是未初始化和未定义的行为 就像说 int x; x在初始化之前没有值。枚举的行为非常类似于整数,即它们没有定义良好的默认值。在初始化变量之前,如果不调用未定义的行为,则无法读取该变量的值。顺便说一句,在前面的话中添加了这样一句话:您确实可以为静态枚

我对c++中的枚举变量有一个问题:

type enmu {
   DAY1 = 1,
   DAY2,
   DAY3,
   DAY4
} DAYS;

void main() {
   DAYS days;
}
那么天数的默认值是什么?

读取该值是未初始化和未定义的行为

就像说

int x;

x
在初始化之前没有值。

枚举的行为非常类似于整数,即它们没有定义良好的默认值。在初始化变量之前,如果不调用未定义的行为,则无法读取该变量的值。

顺便说一句,在前面的话中添加了这样一句话:您确实可以为静态枚举变量设置默认值。但是要小心——它将是0(以及所有其他静态变量)。考虑下面的代码:

#include <iostream>

enum _t_test {
                test_1 = 1,
                test_2 = 2,
                test_3 = 3,
             };

static enum _t_test t;

int main()
{
    using namespace std;
    cout << "Value of t is: " << t;
    return 0;
#包括
枚举测试{
测试_1=1,
测试2=2,
测试_3=3,
};
静态枚举测试;
int main()
{
使用名称空间std;
库特
那么天数的默认值是多少`

与任何自动对象一样,
days
对象的值是不确定的

现在,如果您使用
static
说明符声明对象:

static DAYS days;

然后像任何算术类型的静态对象一样,初始值将是
0

ok,如果我这样做:if(days){//do something},会发生什么?@ratzip任何事情都可能发生。如果未初始化
days
,这是未定义的行为。您所说的未定义行为是什么意思?您能举个例子吗?@ratzip什么让人困惑?您想要未定义行为的示例,对吗?在我的情况下,默认值是什么?