반응형
comma ,
연산자
둘 이상의 문장을 한 행에 삽입할 때 사용된다.,
는 시퀀스 포인트를 추가하므로, 여러개의 문장을 하나의 문장으로 쓰되 각 문장을 시퀀스 포인트로 나눠주는 것이라고 생각할 수 있다.
콤마 연산자는 드물게 사용하는 것이 좋다. 그리고 사용시 두 연산자가 연관성이 있는 것이거나, 혹은 여러 단계를 거치는 연산이 한 행에서 행해지도록 하는 것을 목적으로 하는 것이 좋다.
둘 이상의 변수를 동시에 선언하거나, 둘 이상의 인자를 함수로 전달할 때에 사용하는 콤마 ,
는 콤마 연산자가 아니다. 이 때의 ,
는 왼쪽에서 오른쪽으로의 피연산자 평가를 보장하지 않는다.
왼쪽에서 오른쪽으로 평가되며, 오른쪽 피연산자의 type과 value가 반환된다.
#include <stdio.h>
int main() {
int a=1, b=2, c, d, e;
c = (a, b); //(a)
d = a, b; //(b)
e = (a, b, c); //(c)
printf("c:%d\n", c);
printf("d:%d\n", d);
printf("e:%d\n", e);
}
출력
c:2
d:1
e:2
콤마 연산자의 사용예는 다음과 같다.
#include <stdio.h>
int main() {
int i=1, j=2, k=3; // 콤마연산자
printf("Before: i=%d, j=%d, k=%d \n", i,j,k); // 콤마연산자
i=j, k=5; // 콤마연산자
printf("After: i=%d, j=%d, k=%d \n", i,j,k);
return 0;
}
for 문에서는 이렇게 사용할 수 있다. 두개의 index를 사용하는 것이다.
// reverse string s in place
#include <stdio.h>
int main() {
char s[]= "asdf";
int i, j, c;
for(i = 0, j = strlen(s)-1; i < j; i++, j--){ // 콤마 연산자
c = s[j], s[i] = s[j], s[j] = c; // 콤마 연산자
}
}
반응형
'Programming Tools > TCPL C Language' 카테고리의 다른 글
[C Language] Chap.4 Functions and Program Structure - Functions returning Non-Integers (0) | 2021.06.21 |
---|---|
[C Language] Chap.4 Functions and Program Structure (0) | 2021.06.20 |
[C Language] Chap.3 Control Flow - Goto와 Label (0) | 2021.06.11 |
[C Language] Chap.3 Control Flow - Break, Continue (0) | 2021.06.10 |
[C Language] Chap.3 Control Flow - do-while loop(do-while 문) (0) | 2021.06.10 |