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

7

我有一个关于C++中枚举变量的问题:

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

void main() {
   DAYS days;
}

那么days的默认值是什么?
4个回答

8

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

就像说

int x;

x 在初始化之前没有值。


好的,那么如果我这样做:if(days) {//做某事},会发生什么? - user707549
未定义行为是什么意思?你能举个例子吗? - user707549
@ratzip 你不明白什么了吗?你想要未定义行为的例子,对吧? - Luchian Grigore
在我的情况下,将会是什么默认值? - user707549
@ratzip 没有。if 会是非法的。 - Luchian Grigore
显示剩余2条评论

2
那么days的默认值是什么呢? 与任何自动对象一样,days对象的值是不确定的。 如果您使用static关键字声明了对象:
static DAYS days;

对于任何算术类型的静态对象,初始值都将为0


1

枚举类型的行为与整数类型非常相似,即它们没有明确定义的默认值。在初始化变量之前读取变量的值会导致未定义的行为。


0

顺便说一句,在之前的话中补充一下:你确实可以为一个静态枚举变量设置默认值。但是要小心——它将会是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;

}

它将打印0,但是你的枚举范围是1..3。所以要注意。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接