3.11 콤마(,) 연산자    [doc]    [smts]

 콤마(.)도 C 언어의 연산자인데 피연산자 두 개를 받는 이항 연산자이다. 이 연산자는 첫 번째 식을 구한 다음 그것은 버린다. 그리고 두 번째 연산을 수행하여 그 결과값을 반환한다. 쉼표 연산자는 우선 순위가 가장 낮기 때문에 먼저 수행하려면 괄호를사용해야 한다. 예를 들어 보자.


0311-01.c
#include <stdio.h>
int main() {
   int ia=1, ib=2, ic, id, ie;

   ic = (ia, ib); //(a)
   id = ia, ib; //(b)
   ie = (ia, ib, ic); //(c)

   printf("ic:%d\n", ic);
   printf("id:%d\n", id);
   printf("ie:%d\n", ie);
}
실행 결과
ic:2
id:1
ie:2

위에서 (a)는 괄호안의 콤마연산자를 먼저 수행하므로 ib값을 반환하여 그것이 ic에 저장된다. (b)는 id에 ia값이 저장된다. 왜냐면 콤마 연산자는 대입연산자보다 우선 순위가 낮아서 다음과 같기 때문이다.


id = ia, ib; // (b)

(id = ia), ib;


따라서 id=ia 가 먼저 수행되고 ib값이 구해지지만 그 뒤에 아무 동작이 일어나지 않는다. (c)는 콤마 연산자의 결합 방향에 의해서 다음과 같다.


ie = ( ia, (ib, ic) );

따라서 ie에는 ic값이 저장된다.


 콤마 연산자는 두 개의 표현식을 하나로 줄일 때 주로 사용된다.


// 두 개의 표현식

ia++;

ib++;


//콤마 연산자를 이용한 하나의 표현식

ia++, ib++;


또한,  만약 두 개의 대입문을 하나로 줄이고 싶다면 다음과 같이 하면 되지만 이런 식으로는 잘 사용되지 않는다.


ia = 1;
ib = 2;

ib = (ia=1, 2);

콤마 연산자는 나중에 소개될 for문의 갱신식에서 여러개의 변수를 동시에 변경시킬 때 많이 사용된다.


'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글

C언어의 문자열  (0) 2016.04.11
조건문 예제 2  (0) 2016.04.04
sizeof 연산자  (0) 2016.04.04
1장 연습문제  (0) 2016.03.28
2.7 논리형(bool형)  (0) 2016.03.28
Posted by 살레시오

댓글을 달아 주세요