C ++ boolalpha混淆

时间:2016-04-01 23:11:26

标签: c++

任何人都可以解释下面的c ++代码结果吗?

input: true false 1
output: false, true, true,

#include <iostream>
using namespace std;
int main ()
{
    bool c1, c2, c3;
    cin >> c1 >> c2 >> c3;
    cout << boolalpha << c1 << ", " << c2 << ", " << c3 << ", " << endl;//LINE I
    return 0;
}

2 个答案:

答案 0 :(得分:2)

请参阅here

  • 在流str中启用boolalpha标志,就像调用str.setf一样(std :: ios_base :: boolalpha

请务必先查看文档。

答案 1 :(得分:0)

您操作的istream对象(此处为cin)要求0或1输入bool,您的输入为true。这导致操作失败,failbit上设置了istream,因为您没有检查输入是否失败,接下来的两个分配是c2和{{ 1}}确实发生了,而是被跳过了。因此,c3为false,因为输入操作失败。 c1c2未被修改或初始化,因此可能具有任何价值。