Решения к упражнениям из книги "Язык программирования С" Б. Керниган и Д. Ритчи
Упражнение 2.2.
Напишите цикл, эквивалентный приведенному выше циклу for, не используя операции && и ||. Комментарий: в этом цикле для проверки условия завершения используется две тернарные операции ? : вложенные одна в другую.
Возможно, это единственное компактное решение, при котором не требуется никаких дополнительных операторов в теле или вне тела цикла.
Может возникнуть соблазн использовать операцию "запятая", но это неизбежно приведет к ошибке, так как
в этом случае в любом проходе цикла будут использоваться все операторы по проверке условия завершения цикла.
----------
/* Exercise 2.2 from "The C Programming language" book by K&R */
for(i = 0; i<lim-1 ? (c=getchar())!='\n' ? c!=EOF : FALSE : FALSE; ++i)
s[i] = c;