为什么输出不显示初始化值-1?

时间:2020-09-21 22:45:41

标签: c++ c++11

int main()
{
    cout << "Please enter your first name and age\n";
    string first_name = "???"; 
    int age = -1;               
    cin >> first_name >> age; 
    cout << "Hello, " << first_name << " (age " << age << ")\n";    
}

根据《 使用C ++编程原理和实践》第二版(作者:Bjarne Stroustrup),当我提供输入信息时

22 Carlos

预期输出应为:

22(age -1)

但是当我运行它时,我得到:

22(age 0)

是什么原因?

1 个答案:

答案 0 :(得分:5)

您的书中描述的行为在C ++ 11之前是正确的。在此之前,如果提取失败,则仅设置故障位。该值本身保持不变。

但是,自C ++ 11起,该值现在设置为零,此外还设置了故障位。有关更多信息,请参见this reference page on std::istream::operator>>