2012-05-21 3 views
3

가능한 중복은 : 함수의 매개 변수는 어떻게 실행됩니까?


function parameter evaluation order

내가 4 개 인수하는 기능을 가지고 있다고 가정. 실행을 위해 가장 먼저 고려되는 매개 변수는 무엇이며 이유는 무엇입니까?

저는 함수 프로토 타입에 사용 된 연산자의 의미를 이해하려고 시도했습니다. ,. 규칙은 마지막 변수가 먼저 고려되는 것과 같은 규칙입니까?

+0

'실행'이란 무엇을 의미합니까? –

+0

함수의 매개 변수가 "실행"되지 않습니다. –

+4

','연산자는 아무런 의미가 없습니다. 왜냐하면 함수 인자 표현식 * 사이의 쉼표는 쉼표 연산자 *가 아니기 때문입니다. 그것들은 단지 콤마입니다. 그 외에도, 나는이 질문이 속임수임을 꽤 확신한다. –

답변

5

우리는 다음과 같은 프로토 타입과 함수가있는 경우 :

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.

요약하면 쉼표 연산자는 쉼표 연산자 이 아니며입니다.

1
  1. 쉼표는 인수를 분리하는 수단으로 사용됩니다. 쉼표는 이 아니고 연산자입니다.

  2. 함수 인수의 순서는 컴파일러와 런타임 스택의 작동 방식에 따라 다릅니다. 표준에서는 컴파일러에게 인수가 평가되는 순서를 결정하기 때문에 이 유지되는 특정 순서에 의존해서는 안됩니다.

관련 문제