我对 C++ 中的枚举变量有疑问:
type enmu {
DAY1 = 1,
DAY2,
DAY3,
DAY4
} DAYS;
void main() {
DAYS days;
}
那么天数的默认值是多少?
读取值是未初始化和未定义的行为。
就像说
int x;
x
在初始化之前没有值。
那么天的默认值是多少?
与任何自动对象一样,对象的值days
是不确定的。
现在,如果您使用说明static
符声明您的对象:
static DAYS days;
然后就像任何算术类型的静态对象一样,初始值将是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。所以要注意它。