교재 21쪽에
The line
nl = nw = nc = 0;
sets all three variables to zero. This is not a special case, but a consequence of
the fact that an assignment is an expression with a value and assignments associate
from right to left. It’s as if we had written
nl = (nw = (nc = 0));
이부분이 이해가 안됩니다 =0=
대충 해석을 해보면
그 줄
nl = nw = nc = 0;
은 모든 3개의 변수를 0으로 설정한다. 이것은 특별한 케이스가 아니나, 그 할당이 값과 함게한 표현이라는 것과 할당이 오른쪽에서 왼쪽으로 연관된다는 사실의 결과이다. 만약에 우리가 이렇게 쓴 것과 같다.
nl = (nw = (nc = 0));
이게 대체 무슨말이죠?
책 2.12에 해당 내용에 대한 설명이 자세히 있습니다.
= 기호는 assignment(할당)연산자라고 해서, 대부분의 기호가 왼쪽->오른쪽 순으로 진행되는데 비해 assignment 연산자는 왼쪽<-오른쪽 순서로 진행됩니다.
예를 들어
a + b - c + d = ((a + b) - c) + d
라고 생각할 수 있는 것처럼
nl = nw = nc = 0는 반대로 오른쪽부터 먼저 실행하기 때문에
nl = (nw = (nc = 0))과 같은 의미를 지니게 되는 것이죠.
과정을 좀 더 자세히 풀어적으면
nl = (nw = (nc = 0))
nl = (nw = (0))
nl = ((0))
이렇게 되기 때문에 nl, nw, nc가 모두 0이 되는 것입니다.