这两者有区别吗?我知道一个人将流返回到if
,而另一个人立即返回一个布尔值,但是它们是否存在功能差异还是等效?
答案 0 :(得分:5)
此处,表达式cin >> x
执行可能更新x
的输入操作,并且其表达式结果返回对流的引用,即返回cin
。所以cin
被直接用作条件。这将调用转换为boolean,boolean被定义为使其本身等同于!cin.fail()
(即表达式cin >> x
,因为条件等同于写!(cin >> x).fail()
或者作为逗号表达式,(cin >> x, !cin.fail())
。