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 중국어 웹사이트의 기타 관련 기사를 참조하세요!