在下面的代码中:
为什么没有打印出"Output: "?难道不应该先调用
#include <iostream>
using namespace std;
int f()
{
throw 1;
}
int main()
{
try
{
cout << "Output: " << f() << endl;
}
catch (int x)
{
cout << x;
}
}
为什么没有打印出"Output: "?难道不应该先调用
operator<<(cout, "Output: ")
,然后再调用operator<<(cout, f())
吗?如果这一行是原子操作,那么打印是如何被反转的呢?
cout
会像这样使用分配律?难道先不是应该先计算所有的参数吗? - PaulMcKenzieoperator<<(cout, "Output: ")
之前被评估的事实。我认为参数将从左到右进行评估。 - Igor Ševo