Я не очень боюсь этого упражнения (святое дерьмо, после 1-20 до 1-24 ...), но мне интересно, если что-то не так с моим решением. В упражнении вам предлагается написать цикл, эквивалентный следующему:K & R Язык программирования C - Упражнение 2-2: Проверьте мою работу?
for (i=0; i<lim-1 && (c=getchar()) != '\n' && c!= EOF; ++i)
s[i] = c;
без использования || или & &. Я предпочитаю не использовать какие-либо языковые функции, не представленные мне уже, и я серьезно отношусь к идее, что каждое упражнение размещается там, где оно есть, потому что целью является использование пользователем предоставленных концепций. Таким образом, я пришел с этим:
for (i=0; (i<lim-1) == ((c=getchar()) != EOF) == (c != '\n'); ++i)
s[i] = c;
Там в много похорошела решение с простой, если/иначе, если тип условна, но я хотел бы использовать разговор этой секции о выражениях, имеющих числовые значения на основе их правду или фальшь и так далее. Дело в том, что мое решение не входит ни в один из сайтов, на которых я обычно проверяю правильные решения для упражнений, поэтому, несмотря на то, что он работает одинаково. Мне было интересно, если что-то не так с тем, как я это сделал, кроме того, что он был уродлив? Отличается ли функциональность каким-то образом?
Вы можете изменить EOF и '\ п', если я могу видеть.И еще одна проблема заключается в том, что если все утверждения будут ложными, то результат будет истинным (false == false приведет к true). Поэтому я бы добавил «== true» в конце, тогда мне кажется, что это правильно. – Sekory
Этот вопрос не соответствует теме, потому что он принадлежит [codereview.se] –
Кажется труднее прочитать, чем [if/else solution] (https://github.com/thvdburgt/KnR-The-C-Programming -Language-Solutions/blob/master/Chapter% 202/2-2/loop.c) (что, вероятно, было предназначено.) –