I нашел этот фрагмент кода в Википедии.
#include <stdio.h>
int main(void)
{
int c;
while (c = getchar(), c != EOF && c != 'x')
{
switch (c)
{
case '\n':
case '\r':
printf ("Newline\n");
break;
default:
printf ("%c",c);
}
}
return 0;
}
Мне любопытно выражение, используемое как условие для цикла while:
while (c = getchar(), c != EOF && c != 'x')
Совершенно очевидно, что он делает, но я никогда не видел эту конструкцию раньше. Является ли это конкретным для цикла while? Если нет, то как анализатор/компилятор определяет, какая часть выражения, разделенного запятыми, возвращает логическое значение для цикла while?