我有以下代码段:
ifstream input(aFileName);
bool select;
while (!input.eof())
{
input >> select;
cout << select << endl;
if(select){
// do something
}
}
当我运行此代码时,我发现以下两件我不理解的事情:
变量select
在执行行bool select;
之后立即具有值1,即显然没有初始化。怎么会这样?
如果提供的信息充足,请告诉我。我当然可以适应这个问题。
答案 0 :(得分:2)
处理Boolean时,应始终在初始化变量时存储默认值。这里有来自堆栈溢出的人解释如果没有默认值可能会发生什么影响:Default value of an unset boolean in C++?
因此,如果要将值设置为false,请确保以false值初始化它。
<强> C ++ 强>
ifstream input(aFileName);
bool select = false; // DEFAULT
while (!input.eof())
{
input >> select;
cout << select << endl;
if(select){
// do something
}
}
答案 1 :(得分:0)
在块范围内定义的未初始化标量变量的值是垃圾。
1
与任何其他垃圾值一样有效。
答案 2 :(得分:0)
我不确定第2点,但对于第1点:C / C ++中未初始化的变量可以具有任何值。您不应该依赖未初始化变量的值。