PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2009/04/30 15:16:23
Name AhnGoon
Subject [프로그래밍 질문] , (콤마) 연산자의 정확한 용법을 알고 싶습니다.
예전에 제 선임님의 코드에서 이런걸 발견했는데요...

for ( i = 0 ; i < 10 ; i++, j++ ) { ... }

저기서 i++, j++ 부분의 콤마 연산자의 용법이 궁금합니다.
뭔가 코드를 줄이는데 요긴하게 쓰이는 것 같기는 한데, 정확한 용법을 몰라서 못 써먹고 있네요. ^^;;
게다가, MSDN 등등을 찾아봐도 관련 자료를 찾기가 힘들고, 구글사마한테 물어보면 너무 많이 나와서;;
코드 압축에 능하신 임베디드 개발자분들이나, 이런 분들은 잘 아실 것 같아서 여쭤봅니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
도니..
09/04/30 15:23
수정 아이콘
i++;
j++;
과 같은 뜻입니다.. i++; 는 i=i+1;이라는 뜻이구요~
단지 두줄로 작성한 것을 한줄로 줄여 쓴거라고 생각하시면 될듯 하네요.
09/04/30 15:27
수정 아이콘
도니..님// 음.. 그니까, for 문에서...
for ( i = 0 ; i < 10 ; i++; j++ )
...
이렇게 하면 컴파일 에러가 나잖아요. 근데... 콤마로 구분하면 된단 말이죠.
그렇다면, 저걸 다른데서는 쓸 일이 없고, 단지 for 문에서나 쓰이는 연산자라는 뜻인가요?
콤마의 예외적인 사용방법이라고 생각하면 되나요? 보통은 함수 호출 등에서 구분자로 쓰이는것만 알고 있어서...
도니..
09/04/30 15:33
수정 아이콘
일반적으로도 사용 되는데요? for 구문 자체에 쓰이는 ; 은 구별을 짓기 위한 거구요.. for(i=0 ; i<10 ; i++ ; j++)은 ; 을 세번 적게 되서 나는 에러겠네요..
for문에서 많이 쓰이긴 하는데요.. 예를 들어 for(i=0, j=0 ; i<10 ; i++, j++) 이런 식으로도 사용 가능합니다.
콤마 연산자로 찾아보시면 프로그래밍 책에 있습니다.
도니..
09/04/30 15:38
수정 아이콘
일반적으로 , 연산자는 문장을 줄이기 위해 사용됩니다.
선언시에도 int i; int j; --> int i, j; 와 같이 사용이 가능하며, i +=j; j++; 이와 같은 두 문장을 i+=j, j++; 와 같이 줄여서 사용해도 같은 뜻입니다. 좌--> 우 로 실행됩니다.
주로 변수 선언, for문에서 많이 사용되기는 합니다.
MoreThanAir
09/04/30 15:40
수정 아이콘
두 줄에 쓸 것을 한 줄에 쓴다고 생각하시면 됩니다.
가장 흔하게 쓰는 경우는 변수를 일괄적으로 선언하는 경우가 되겠네요.

int a,b,c,d;
a=3,b=2,c=0,d=1;

이런식으로 편하게 쓰는 경우가 많았던 것 같습니다.
09/04/30 15:40
수정 아이콘
;는 한문장을 구분할때 쓰고 ,는 한문장에 여러가지 동작을 수행시키고 싶을때 씁니다.
int a,b,c;
a=b,c=a;
for문 형식이 세개의 문장으로 구성되어 있기 때문에 한문장에 두가지 이상의 증가문을 쓰려면 ,를 사용합니다.
chcomilk
09/04/30 15:42
수정 아이콘
Comma operator은 상당히 특이한 연산자 입니다.

일단 이항연산자(용어가 맞나...) 이고, 다른 연산자와는 다르게 앞에 있는 연산을 계산(처리) 한 후 그 값을 무시하고 뒤에 있는 연산자를 계산 합니다.

재미있는 사용법은

x = (a + b) , (c + d); 하면

a + b 를 계산 하고 그 값은 무시 하고
x = (c + d) 가 되 버립니다.


x = (a++), (a + b) 하면
a는 1 증가 하고, x = a (즉 a+1) + d 가되죠....

하지만 코드상 혼란이 오기 때문에
초기화 혹은 for 이외에서는 사용을 하지 않는 것이 좋습니다.
고지를향하여
09/04/30 15:42
수정 아이콘
콤마연산자는 A, B 형태로 구현되며
의미하는 뜻은 A 를 먼저 실행 후 결과값을 버리고 B를 실행하고 B의 결과 값을 리턴해라는 뜻입니다 ^^
그리고 연산자 중에서 가장 늦은 실행 순서를 가지고 있습니다.

코딩 할때 보기 좋아라고 i++, j++ 이런식으로 문장 여러개를 한줄에 표현하기 위해서 사용하기도 합니다

콤마 연산자에 대해서 조금 더 설명 드리자면

i = a, b;

같은 경우 = 연산자가 먼저 실행되어서,
i 에 a가 대입되고 무시되고 (i 의 최종값을 어디에서도 안 쓴다는 거지 대입 연산을 무시하는게 아닙니다)
그냥 b; 이런 문장과 동일시 됩니다.

다른 경우로 i = (a, b); 의 경우
괄호가 먼저 실행되니 a,b 가 연산되어 a는 그냥 버리고 b만 남습니다.
결국 i = b와 같은 결과가 실행됩니다.

보통 코딩을 간결화 할때
i 에다가 a에 10를 더한후 b와 곱해서 대입해라.

a = a + 10;
i = a * b;

이런 문장을 i = (a += 10, a * b);
이런식으로 사용할 수도 있습니다.
고지를향하여
09/04/30 15:43
수정 아이콘
늦었네요TT
chcomilk
09/04/30 15:43
수정 아이콘
^^* 많은 답들이 있네요.

일하기 귀찮아 하거나 땡땡이 중인 현직 프로그래머들이 많으신 것 같군요. ^^*
고지를향하여
09/04/30 15:45
수정 아이콘
chcomilk님// 내일 근로자의 날이라 몇일 연속 놀 거 생각하니 일이 안 잡히네요;;
09/04/30 15:50
수정 아이콘
캬캬캬... 프로그래밍 관련 질문을 올리면 분위기가 참 묘해지네요(응?)
음.. 저런 사용법들이 있었군요. 앞으로 요긴하게 쓸 수 있을듯 하네요.
아뭏든, 감사드립니다. (_ _)o
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
54820 바람피려는 친구 [16] 이스트2463 09/04/30 2463
54818 편의점 알바 질문입니다 [4] 회전목마2138 09/04/30 2138
54817 프로리그,위너스리그 상금 좀 알려주시면 감사하겠습니다. [3] 불굴의토스2188 09/04/30 2188
54816 [의학/영양] (구차하지만 절실한) 요산/통풍과 관련된 음식 섭취에 대한 질문 [3] amoelsol4872 09/04/30 4872
54815 이런친구 어떻게해야하나요? [4] 눈팅매니아2077 09/04/30 2077
54814 네비매립, 후방카메라 설치 .. 이런거 할만한가요?^^; [2] 마르키아르2107 09/04/30 2107
54813 수면중에 쥐가 난 경우 있으신가요? [7] 어...2148 09/04/30 2148
54812 예전 전상욱선수와 마재윤선수의 경기에서 해설진들이 했던 말중에요. 로즈마리2038 09/04/30 2038
54811 [쇼핑] 미국에서 사면 싼 물건 [5] 임요환의 DVD3542 09/04/30 3542
54810 usb가 고장이 난 거같습니다..ㅠ [2] top[of]zerg=홍Yello1585 09/04/30 1585
54809 컴퓨터 관련 질문입니다. 친절한 메딕씨1442 09/04/30 1442
54808 학교에서의 IP설정에 대한 질문입니다. [1] 유유히2098 09/04/30 2098
54807 직장생활에 관한 질문입니다. [6] 나이스후니1900 09/04/30 1900
54806 밑에글을보고 위닝 2009질문드려요.. [3] 하루를산다1559 09/04/30 1559
54805 [프로그래밍 질문] , (콤마) 연산자의 정확한 용법을 알고 싶습니다. [12] AhnGoon2476 09/04/30 2476
54804 소개팅녀와 영화 '박쥐' 보는 것 괜찮을까요??? [22] 래토닝3040 09/04/30 3040
54801 파워포인트의 글씨가 깨집니다 [5] djgiga1991 09/04/30 1991
54800 저기 .. 급합니다; [2] 이나영2097 09/04/30 2097
54799 저도 황당질문 하나. 좀비가 나타난다면? [14] Daywalker2153 09/04/30 2153
54798 팝가수Pink의 Just like a pill이라는 곡이요. [2] 악학궤범a2370 09/04/30 2370
54796 카팩 질문드립니다. [3] Enjoy1831 09/04/30 1831
54795 컴퓨터공학 관련된 교양을 들으려고 하는데요 [11] 서명덕1523 09/04/30 1523
54794 축구게임 선택에 관한 질문이예요.(위닝/피파 등 2000년대 초중반 게임 위주의 추천) [10] 미남주인1853 09/04/30 1853
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로