7

我对 C++ 中的枚举变量有疑问:

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

void main() {
   DAYS days;
}

那么天数的默认值是多少?

4

4 回答 4

8

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

就像说

int x;

x在初始化之前没有值。

于 2012-08-20T12:26:18.230 回答
2

那么天的默认值是多少?

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

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

static DAYS days;

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

于 2012-08-20T12:39:45.227 回答
1

枚举的行为与整数非常相似,即它们没有明确定义的默认值。如果不调用未定义的行为,就无法在初始化变量之前读取它的值。

于 2012-08-20T12:27:14.913 回答
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。所以要注意它。

于 2012-08-20T12:37:38.340 回答