未初始化的枚举变量值
uninitialized enum variable value
我通过使用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;
}
枚举不受约束,只能获取声明的值。
它有一个底层类型(一个至少足够大以表示所有值的数字类型),并且可以通过适当的不可靠类型转换,为该类型提供任何可表示的值。
此外,使用未初始化的变量会产生未定义的行为,因此原则上任何事情都可能发生。
因为这些变量未初始化;它们的值是不确定的。因此,您看到了未定义行为的结果。
与任何变量一样,如果未初始化,则值未定义。枚举变量不能保证包含有效值。
要查看一些值,需要首先初始化它-
DAY day1 = SAT,day2 = SUN;
您声明但不初始化day1
和day2
。作为没有默认构造的POD类型,变量处于未定义状态。
我们可以通过下面的代码进行讨论:
#include <iostream>
using namespace std;
int main()
{
int i1, i2;
cout << i1 << endl << i2 << endl;
}
POD类型的未初始化局部变量可能具有无效值。
相关文章:
- 枚举环境变量的惯用C++14/C++17方法
- 访问在 C++ 结构中声明的枚举变量
- 是否可以在C++变量中保存多种类型的枚举?
- 为什么枚举变量在这里是右值?
- C++如何将字符串数组中的一个点设置为枚举变量
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- 如何检查类中定义的枚举类型变量是否被分配给?
- 何时枚举变量在C 中评估
- Arduino-枚举变量值本身发生变化
- 在类中获取并设置枚举变量
- Python:使用 ctypes 从 c++ 检索枚举变量
- 将成员枚举变量传递给类构造函数时出现无效的重定义错误
- 使用枚举变量作为类数据成员会出现错误
- 将 wstring、string 和对枚举变量的引用从 C# 传递到 C++(非托管 DLL)
- C++调用带有枚举变量的构造函数
- 如何定义类中包含的枚举变量
- 未初始化的枚举变量值
- 编写静态const uint变量和匿名枚举变量之间的区别是什么
- cpp文件中设置静态枚举变量的正确方法
- 内存管理- c++枚举变量bad_alloc错误