На главную страницу

Решения к упражнениям из книги "Язык программирования С" Б. Керниган и Д. Ритчи

Упражнение 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;	
	
----------