본문 바로가기
프로그래밍/c언어 기초공부

[C언어 기초-12] 콤마 연산자(comma operator)

by 졸린이 2024. 8. 2.
반응형

콤마 연산자

콤마 연산자는 연산 기호가 콤마(,)여서 콤마 연산자이다.

","로 분리된 수식들을 왼쪽에서 오른쪽으로 평가하고 수식 전체의 값은 가장 오른쪽의 값이 된다.

 

c에서 콤마는 두 가지 용도로 사용되는데 첫째는 인자나 변수따위를 구분하는 구분기호.

둘째가 콤마 연산자이다.

 

예시를 보면서 설명을 이어가보면

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
main() {
    int x = 0, y = 0;
 
    int comma, box;
 
    comma = (box = 2++box, box = box + 3, box + 5);
    x = (y + 5, y + 4, (y = 20+ 6);
 
    printf("comma = %d, box = %d\n", comma, box);
    printf("x = %d, y = %d\n", x, y);
    printf("x = %d, y = %d\n", (x, y));
 
}
cs

8행 : 수식들이 , 로 구분되어 있는데 왼쪽부터 전개해 나가보면 box = 2, ++box해서 3이 되고 box = box + 3 으로 6이 되고 box + 5로 끝이나서 comma에는 11이 대입되고 box는 6이 된다.

왼쪽부터 box의 값이 바뀌어 갔고 comma는 마지막 수식의 값이 들어갔다.

 

9행 :  (y + 5, y + 4, (y = 20) + 6) 왼쪽부터 수식이 전개되어 처음엔 5 그후엔 4가 되지만 x는 맨 마지막 수식 (y = 20) + 6이 되어 26이 된다. 여기서 y는 20이 된다. (만약 마지막 수식이 (y + 20) + 6 이라면 x는 26이지만 y는 그대로 0이다.)

 

13행 : print문에서 인수를 괄호로 둘러싸게 되면 콤마 연산자를 포함한 수식으로 사용되어 첫 번째 변환기호의 값이 된다. (x = %d, 이부분) 즉 y값이므로 20이 출력된다.

y = %d 여기 두 번째 변환기호에는 대응되는 인수가 없어서 임의의 값이 대응되어 출력된다. 

 

반응형

댓글