Sequential-Evaluation 연산자

"쉼표 연산자"라고도 하는 순차적 계산 연산자는 두 피연산자를 왼쪽에서 오른쪽으로 순차적으로 평가합니다.

문법

expression:
assignment-expression
expression , assignment-expression

순차 계산 연산자(,)의 왼쪽 피연산자는 식으로 void 평가됩니다. 작업의 결과는 오른쪽 피연산자와 동일한 값과 형식을 가짐 각 피연산자는 모든 형식일 수 있습니다. 순차 계산 연산자는 피연산자 간에 형식 변환을 수행하지 않으며 l-value를 생성하지 않습니다. 첫 번째 피연산자 뒤의 시퀀스 지점이 있습니다. 즉, 왼쪽 피연산자의 평가에서 모든 부작용이 완료된 후 오른쪽 피연산자의 평가를 시작합니다. 자세한 내용은 시퀀스 지점을 참조하세요.

순차 계산 연산자는 일반적으로 하나의 식만 허용되는 컨텍스트에서 둘 이상의 식을 평가하는 데 사용됩니다.

쉼표는 일부 컨텍스트에서 구분 기호로 사용할 수 있습니다. 그러나 쉼표 사용을 구분 기호로 사용하는 것과 연산자로 사용하는 것을 혼동하지 않도록 주의해야 합니다. 두 가지 용도는 고유합니다.

예시

이 예제에서는 순차적 평가 연산자를 보여 줍니다.

for ( i = j = 1; i + j < 20; i += i, j-- );

이 예제에서는 문의 세 번째 식의 for 각 피연산자가 독립적으로 평가됩니다. 왼쪽 피연산 i += i 자가 먼저 계산되고 오른쪽 피연산자가 j--평가됩니다.

func_one( x, y + 2, z );
func_two( (x--, y + 2), z );

함수 호출에서 쉼표로 func_one구분된 세 개의 인수가 전달xy + 2z됩니다. 함수 호출 func_two에서 괄호는 컴파일러가 첫 번째 쉼표로 순차 계산 연산자로 해석하도록 합니다. 이 함수 호출은 두 개의 인수를 전달합니다 func_two. 첫 번째 인수는 식y + 2의 값과 형식을 포함하는 순차 계산 연산(x--, y + 2)의 결과이며 두 번째 인수는 다음과 입니다z.

참고하십시오

쉼표 연산자: ,