#loops #logical-operators #short-circuit-evaluation
Вопрос:
`
#include <stdio.h>
int main ()
{
int i=0;
for(printf("onen");i<3 amp;amp; printf("");i )
{
printf("Hi!n");
}
return 0;
}
`
**КАК мы уже знаем, «условие короткого замыкания логического оператора и (amp;amp;), в то время как мы решаем условие для зацикливания, используемая концепция является просто логическими операторами В соответствии с концепцией короткого замыкания, для i=0 i
Комментарии:
1. «в этом утверждении левая часть истинна, поэтому необходимо оценить условие правой стороны», поскольку они оба должны быть истинными. Вы путаете
amp;amp;
(И) с||
(ИЛИ). — Тогда возникает вопрос: «какое возвращаемое значениеprintf
и какое логическое значение это считается?»
Ответ №1:
Глядя на ссылку printf()
, мы видим:
- При успешном выполнении возвращается общее количество написанных символов.
Итак, учитывая i<3 amp;amp; printf("")
, что первый раунд i
равен 0, значит i<3
, верно, затем printf("")
выводит нулевые символы, что возвращает 0, что является ложным, поэтому выражение становится true amp;amp; false
, таким образом false
, цикл завершается.