가능한 중복은 : 함수의 매개 변수는 어떻게 실행됩니까?
function parameter evaluation order
저는 함수 프로토 타입에 사용 된 연산자의 의미를 이해하려고 시도했습니다. ,
. 규칙은 마지막 변수가 먼저 고려되는 것과 같은 규칙입니까?
가능한 중복은 : 함수의 매개 변수는 어떻게 실행됩니까?
function parameter evaluation order
저는 함수 프로토 타입에 사용 된 연산자의 의미를 이해하려고 시도했습니다. ,
. 규칙은 마지막 변수가 먼저 고려되는 것과 같은 규칙입니까?
우리는 다음과 같은 프로토 타입과 함수가있는 경우 :
int function(int x, int y, int z);
을 그리고 우리가 같이 호출 :
function(something_a(), something_b(), something_c());
우리는 something_a
, something_b
및 실행의 순서를 추정 할 능력이 없다 something_c
. 다음과 같이
, 우리가 쉼표 연산자를 사용할 수 있습니다
int main() {
int x;
something_a(), something_b();
something_c();
}
를이 경우, 우리는, something_a
가 호출됩니다 다음 something_b
을 알고, 그리고 마지막으로 something_c
.
요약하면 쉼표 연산자는 쉼표 연산자 이 아니며입니다.
쉼표는 인수를 분리하는 수단으로 사용됩니다. 쉼표는 이 아니고 연산자입니다.
함수 인수의 순서는 컴파일러와 런타임 스택의 작동 방식에 따라 다릅니다. 표준에서는 컴파일러에게 인수가 평가되는 순서를 결정하기 때문에 은이 유지되는 특정 순서에 의존해서는 안됩니다.
'실행'이란 무엇을 의미합니까? –
함수의 매개 변수가 "실행"되지 않습니다. –
','연산자는 아무런 의미가 없습니다. 왜냐하면 함수 인자 표현식 * 사이의 쉼표는 쉼표 연산자 *가 아니기 때문입니다. 그것들은 단지 콤마입니다. 그 외에도, 나는이 질문이 속임수임을 꽤 확신한다. –