Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 未初始化的枚举变量值_C++_Enums - Fatal编程技术网

C++ 未初始化的枚举变量值

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

我使用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,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意味着未初始化-它可以是任何东西。