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