boolean变量有没有初始化的值?

时间:2015-06-01 17:57:50

标签: c++ boolean ifstream

我有以下代码段:

ifstream input(aFileName);

bool select;
while (!input.eof())
{
    input >> select;
    cout << select << endl;
    if(select){
    // do something
    }
}

当我运行此代码时,我发现以下两件我不理解的事情:

变量select在执行行bool select;之后立即具有值1,即显然没有初始化。怎么会这样?

如果提供的信息充足,请告诉我。我当然可以适应这个问题。

3 个答案:

答案 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 ++中未初始化的变量可以具有任何值。您不应该依赖未初始化变量的值。