std::cout 中參數求值的順序
了解C 語言中函數參數的求值方式對於避免程式碼中出現意外至關重要。在 std::cout 的上下文中,參數的計算順序可能會令人困惑,如下例所示:
#include <iostream> bool foo(double& m) { m = 1.0; return true; } int main() { double test = 0.0; std::cout << "Value of test is : \t" << test << "\tReturn value of function is : " << foo(test) << "\tValue of test : " << test << std::endl; return 0; }
此程式碼可能會在呼叫 foo 之前和之後列印 test 的值功能。但是,輸出顯示不然:
Value of test is : 1 Return value of function is : 1 Value of test : 0
此行為是由於表達式中未指定的求值順序造成的。雖然先計算最右邊的參數(test 的值)似乎很直觀,但這並不能保證。
為了確保所需的計算順序,請明確地將表達式拆分為單獨的語句,如下所示如下所示:
double value = test; std::cout << "Value of test is : \t" << value << "\tReturn value of function is : " << foo(test) << "\tValue of test : " << test << std::endl;
這確保了在調用foo函數之前將test 的值複製到value 中。因此,輸出現在準確地反映了預期的評估順序:
Value of test is : 0 Return value of function is : 1 Value of test : 1
以上是C 的 `std::cout` 如何評估參數,為什麼順序很重要?的詳細內容。更多資訊請關注PHP中文網其他相關文章!