почему результат следующего программирования на c «один», может ли кто-нибудь объяснить?

#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 , цикл завершается.