if(cin>> x)和if(!(cin>> x).fail())之间有什么区别?

时间:2014-01-07 13:11:23

标签: c++

这两者有区别吗?我知道一个人将流返回到if,而另一个人立即返回一个布尔值,但是它们是否存在功能差异还是等效?

1 个答案:

答案 0 :(得分:5)

此处,表达式cin >> x执行可能更新x的输入操作,并且其表达式结果返回对流的引用,即返回cin。所以cin被直接用作条件。这将调用转换为boolean,boolean被定义为使其本身等同于!cin.fail()(即表达式cin >> x,因为条件等同于写!(cin >> x).fail()或者作为逗号表达式,(cin >> x, !cin.fail())