C++ 未初始化的枚举变量值
我使用enum声明了新类型DAY,然后从中声明了两个变量day1和day2,然后当我未初始化使用它们时,我应该看到0到6之间的值,因为在enumlist中这些值在0到6之间,但我收到的是这些值-858993460 你能解释一下为什么我收到这些值而不是0到6吗C++ 未初始化的枚举变量值,c++,enums,C++,Enums,我使用enum声明了新类型DAY,然后从中声明了两个变量day1和day2,然后当我未初始化使用它们时,我应该看到0到6之间的值,因为在enumlist中这些值在0到6之间,但我收到的是这些值-858993460 你能解释一下为什么我收到这些值而不是0到6吗 #include <iostream> using namespace std; int main() { enum DAY{SAT,SUN,MON,TUE,WED,THU,FRI}; DAY day1,da
#include <iostream>
using namespace std;
int main()
{
enum DAY{SAT,SUN,MON,TUE,WED,THU,FRI};
DAY day1,day2;
cout<<int(day1)<<endl<<day1<<endl;
cout<<int(day2)<<endl<<day2<<endl;
system("pause");
return 0;
}
#包括
使用名称空间std;
int main()
{
枚举日{周六、周日、周一、周二、周三、周四、周五};
第1天,第2天;
cout因为这些变量是未初始化的;它们的值是不确定的。因此,您看到的是未定义行为的结果枚举不受约束,只接受声明的值
它有一个底层类型(一个至少足够大以表示所有值的数字类型),并且可以通过适当的巧妙转换,获得该类型可表示的任何值
此外,使用未初始化的变量会产生未定义的行为,因此原则上任何情况都可能发生。要查看某些值,需要先初始化它-
DAY day1 = SAT,day2 = SUN;
与任何变量一样,如果未初始化,则值是未定义的。枚举变量不保证保持有效值。您声明,但不要初始化day1
和day2
。作为没有默认构造的POD类型,变量处于未定义状态。我们可以通过下面的代码进行讨论:
#include <iostream>
using namespace std;
int main()
{
int i1, i2;
cout << i1 << endl << i2 << endl;
}
#包括
使用名称空间std;
int main()
{
inti1,i2;
cout Uninitialized意味着未初始化-它可以是任何东西。