반응형
콤마 연산자
콤마 연산자는 연산 기호가 콤마(,)여서 콤마 연산자이다.
","로 분리된 수식들을 왼쪽에서 오른쪽으로 평가하고 수식 전체의 값은 가장 오른쪽의 값이 된다.
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 여기 두 번째 변환기호에는 대응되는 인수가 없어서 임의의 값이 대응되어 출력된다.
반응형
'프로그래밍 > c언어 기초공부' 카테고리의 다른 글
[C언어 기초-14] sizeof 연산자. 자료형 byte 구하기 (0) | 2024.08.04 |
---|---|
[C언어 기초-13] 캐스트 연산자(cast operator) (0) | 2024.08.03 |
[C언어 기초-11] 조건 연산자(conditional operator) 삼항 연산자 (0) | 2024.08.01 |
[C언어 기초-10] 복합 대입 연산자 (산술 대입 연산자, 비트 대입 연산자) (0) | 2024.08.01 |
[C언어 기초-09] 비트 연산자 논리 연산자 ~, &, |, ^ (0) | 2024.01.25 |
댓글