2017-05-04 47 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

相關問題