2017-05-04 45 views
1
int x; 
int fun1() 
{ 
    x=x+10; 
    return x; 
} 
int main() 
{ 
    x=5; 
    cout<<x; 
    cout<<fun1(); 
} 

这产生图5和15,同时多个语句产生不同的结果

cout<<x<<fun1(); 

这产生15和15请说明。 Thankyou

+2

看到这个答案进行评估的顺序:在您的输出http://stackoverflow.com/questions/10782863/what-is-the-correct-answer-for-cout-cc – Gerriet

+0

插入新行为清楚起见。现在输出将是例如515没有\ n。 – Brandin

+0

如果你写出实际的['operator <<'](http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt2)在定义时调用它,它可能会更清晰。尝试将它们编写为嵌套函数调用。对于Gerriet所链接的问题所选择的答案在这样做时会有详细的说明。 – WhozCraig

回答

0

在C++参考中,std::cout参数的评估顺序未指定。它不是从左到右,从右到左或其他任何东西。

请避免这一点。而是使用单独的呼叫。

see also

+1

cout << a << b << c有明确的顺序。问题在于函数调用,而不是顺序本身。 – Brandin

+0

@Brandin,那么''std :: cout << C++ << c;''[link](http://stackoverflow.com/questions/10782863/what-is-the-correct-answer-for-cout -cc)。不是功能只是调用,而是一般的评估。 – v78

+0

@BenjaminLindley,谢谢。纠正了模棱两可的句子。 – v78

相关问题