콤마(.)도 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:2id:1ie: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 |