2014년 12월 28일 일요일

C언어에서 ,(콤마) 연산자 사용에 관해

C언어에서 ","콤마 연산자는 어떤 역할을 할까?
함수에 인자를 전달할때 사용하는 구분자로만 생각하는 경우가 많다.

하지만 정확한 의미로 기억하자면 여러개의 문장을 하나로 만들어주는 역할을 한다고 볼 수 있다. 뭔 생뚱 맞는 소리를 한다고 생각하는 사람도 있을것이다.
C언어는 하나의 문장은 ";" 세미콜론으로 끝나고 두문장이 하나로 합쳐질때 , 를 사용하게 된다.
예를 들어 보면
a=10;
b=20;
두 문장이 있을때
a=10,a=20;
이런식으로 사용할 수 있다.

이런건 언제 사용할까?

반드시 한 문장을 사용해야하는 곳이 있다. 예를 들어 for( A ; B ; C ) 문장안에 들어가는 A,B,C의 내용은 하나의 문장외에는 사용할 수 없다.
예를 들어보자
for(i=0,j=0;i<10;i++,j++,k++){
}
i=0,j=0 와 i++,j++,k++ 등으로 여러개의 문장이 하나의 문장으로 표현하였다.

또한 함수의 인자로 사용되는 부분에서도 여러개의 문장이라고 생각할 수 있다.


마지막으로 우선순위가 어떻게 되는지 알아보자?


i = 0;
fun(i++,i++,i++) 이렇게 인자로 넘기면 인자는 어떻게 될까?
아래 예제를 보자

#include <stdio.h>

int main(void) {
 int i;
 i = 0;
 fun(i++,i++,i++);
 return 0;
}
int fun(int a,int b,int c)
{
 printf("%d,%d,%d",a,b,c);
 return 0;
}

결과는 2,1,0 가 된다.
실행 순서는 오른쪽에서 왼쪽으로 "<-" 실행 순서가 된다.


정리하면

여러개의 문장을 하나로 만들어주는 역할을 함.
실행 순서는 오른쪽에서 왼쪽으로 "<-" 실행 순서가 된다.


댓글 없음:

댓글 쓰기