我有一个关于C++中枚举变量的问题:
type enmu {
DAY1 = 1,
DAY2,
DAY3,
DAY4
} DAYS;
void main() {
DAYS days;
}
那么days的默认值是什么?
读取该值是未初始化的和 未定义行为。
就像说
int x;
x
在初始化之前没有值。
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。所以要注意。
if
会是非法的。 - Luchian Grigore