C 시퀀스 위치C Sequence Points

연속 "시퀀스 위치" 사이에서 개체의 값은 식에 의해 한 번만 수정될 수 있습니다.Between consecutive "sequence points" an object's value can be modified only once by an expression. C 언어는 다음과 같은 시퀀스 위치를 정의합니다.The C language defines the following sequence points:

  • 논리 AND 연산자(&&)의 왼쪽 피연산자.Left operand of the logical-AND operator (&&). 계속하기 전에 논리 AND 연산자의 왼쪽 피연산자가 완전히 평가되고 모든 파생 작업이 완료됩니다.The left operand of the logical-AND operator is completely evaluated and all side effects complete before continuing. 왼쪽 피연산자가 false(0)로 평가되는 경우 다른 피연산자는 평가되지 않습니다.If the left operand evaluates to false (0), the other operand is not evaluated.

  • 논리 OR 연산자(||)의 왼쪽 피연산자.Left operand of the logical-OR operator (||). 계속하기 전에 논리 OR 연산자의 왼쪽 피연산자가 완전히 평가되고 모든 파생 작업이 완료됩니다.The left operand of the logical-OR operator is completely evaluated and all side effects complete before continuing. 왼쪽 피연산자가 true(0이 아님)로 평가되는 경우 다른 피연산자는 평가되지 않습니다.If the left operand evaluates to true (nonzero), the other operand is not evaluated.

  • 쉼표 연산자의 왼쪽 피연산자.Left operand of the comma operator. 계속하기 전에 쉼표 연산자의 왼쪽 피연산자가 완전히 평가되고 모든 파생 작업이 완료됩니다.The left operand of the comma operator is completely evaluated and all side effects complete before continuing. 쉼표 연산자의 두 피연산자는 항상 계산됩니다.Both operands of the comma operator are always evaluated. 함수 호출에서 쉼표 연산자는 평가 순서를 보장하지 않습니다.Note that the comma operator in a function call does not guarantee an order of evaluation.

  • 함수 호출 연산자.Function-call operator. 함수 진입 전에 함수에 대한 모든 인수가 계산되고 모든 파생 작업이 완료됩니다.All arguments to a function are evaluated and all side effects complete before entry to the function. 인수 사이의 계산 순서는 지정되어 있지 않습니다.No order of evaluation among the arguments is specified.

  • 조건 연산자의 첫째 피연산자.First operand of the conditional operator. 계속하기 전에 조건 연산자의 첫 번째 피연산자가 완전히 평가되고 모든 파생 작업이 완료됩니다.The first operand of the conditional operator is completely evaluated and all side effects complete before continuing.

  • 전체 초기화 식(즉, 선언문의 초기화 끝과 같이 다른 식의 일부가 아닌 식)의 끝The end of a full initialization expression (that is, an expression that is not part of another expression such as the end of an initialization in a declaration statement).

  • 식 문의 식.The expression in an expression statement. 식 문은 선택적 식과 세미콜론(;)으로 구성됩니다.Expression statements consist of an optional expression followed by a semicolon (;). 식은 해당 파생 작업에 대해 계산되며 이 계산 다음에 시퀀스 위치가 있습니다.The expression is evaluated for its side effects and there is a sequence point following this evaluation.

  • 선택(if 또는 switch) 문의 제어 식.The controlling expression in a selection (if or switch) statement. 선택에 종속된 코드가 실행되기 전에 식이 완전히 계산되고 모든 파생 작업이 완료됩니다.The expression is completely evaluated and all side effects complete before the code dependent on the selection is executed.

  • while 또는 do 문의 제어 식.The controlling expression of a while or do statement. while 또는 do 루프의 다음 반복에 있는 문이 실행되기 전에 식이 완전히 계산되고 모든 파생 작업이 완료됩니다.The expression is completely evaluated and all side effects complete before any statements in the next iteration of the while or do loop are executed.

  • for 문의 세 가지 식 각각.Each of the three expressions of a for statement. for 루프의 다음 반복에 있는 문이 실행되기 전에 식이 완전히 계산되고 모든 파생 작업이 완료됩니다.The expressions are completely evaluated and all side effects complete before any statements in the next iteration of the for loop are executed.

  • return 문의 식.The expression in a return statement. 호출 함수로 제어가 반환되기 전에 식이 완전히 계산되고 모든 파생 작업이 완료됩니다.The expression is completely evaluated and all side effects complete before control returns to the calling function.

참고 항목See Also

식 계산Expression Evaluation