http://gpgstudy.com/forum/viewtopic.php?t=21219
에서 이어짐.
그러니까 C/C++ 에서 comma 연산자는 expression 에서 등장했을때 대략 세가지 (혹은 그이상의) 의미를 지닌다.
1. 두 expression 를 묶어서 하나의 expression 으로 만든다.
2. argument 의 구분자로 쓰인다.
3. operator overloading 으로 1도, 2도 아닌 무언가 다른 동작을 만들 수 있다.
결국 comma 가 코드에 등장했을때 그게 정확히 무슨일을 할지 그 코드만 봐서는 쉽게 알수 없다. 따지고 보면 1 과 2 는 모호하다. 이를테면 아래 코드에서
func( 1, 2 )
위 코드는 func 에 1과 2 두개의 argument 를 던지는 코드일수도 있지만 1,2 를 comma 를 이용한 하나의 expression 으로 본다면 func( 2 ) 로 해석될 수도 있다. 이런걸 방지하려면 규칙에 예외를 추가해야 된다.
In contexts where comma is given a special meaning, [Example: in lists of arguments to functions (expr.call) and lists of initializers (dcl.init) ] the comma operator as described in clause expr can appear only in parentheses.
난 이런걸 별로 좋아하지 않는다. 내친김에 다른 언어들의 경우도 살펴보자.
$:/home/testors> python
Python 2.5.2 (r252:60911, May 26 2008, 13:39:58)
[GCC 4.2.1 20070719 [FreeBSD]] on freebsd7
Type “help”, “copyright”, “credits” or “license” for more information.
>>> 1,2
(1, 2)
>>>
$:/home/testors> perl
1,2
$:/home/testors> ruby
1,2
-:1: syntax error, unexpected ‘,’, expecting $end
Python 2.5.2 (r252:60911, May 26 2008, 13:39:58)
[GCC 4.2.1 20070719 [FreeBSD]] on freebsd7
Type “help”, “copyright”, “credits” or “license” for more information.
>>> 1,2
(1, 2)
>>>
$:/home/testors> perl
1,2
$:/home/testors> ruby
1,2
-:1: syntax error, unexpected ‘,’, expecting $end
참고로 난 루비를 가장 좋아한다. python, perl 은 학습 도중에 짜증이 솟구쳤었는데 ruby 는 모든것이 직관과 의도대로 동작했기 때문에 아무것도 학습할 필요가 없었기 때문이다.

그러고보니 옛날부터 궁금했던 것중에 하나인데, 저 1번이 의미있게 (‘요긴하게’까지는 아니라도…) 사용되는 용례는 대체 어떤게 있나요?
C에서도 쓸만한 예를 본적이 없었지 말입니다.
http://www0.us.ioccc.org/main.html
이런거 할때 매우 요긴하죠.
,를 연산자로 쓰면 구분자는 뭘로 해야하는건가요.. orz