Я мучительно пробираюсь через K & R 2nd ed. и мне не ясно, что делает окончательный вариант if (else if) в примере 1.5.4.
include stdio.h
define IN 1
define OUT 0
main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT) {
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}
Означает ли это: если состояние OUT, то изменить состояние на IN, +1 на nw в любом случае
или
если состояние OUT, ничего не делать, в противном случае изменить состояние на IN, +1 на nw, если состояние IN
Комментарий в тексте: «[...] [оператор] после else представляет собой , если , который контролирует два оператора в скобках».
Почему-то мне трудно понять, что там происходит. Кто-нибудь может помочь? Каждый раз, когда я смотрю на это, у меня замирает мозг.