#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
Кто-нибудь может объяснить, как это работает? Почему там печатается 32? Когда я снимаю тормоз, получается бесконечная петля, и она печатает 12?
#include <stdio.h>
int main(){
for (printf ("3"); printf("2"); printf("1")) break;
return 0;
}
Кто-нибудь может объяснить, как это работает? Почему там печатается 32? Когда я снимаю тормоз, получается бесконечная петля, и она печатает 12?
Первый, printf ("3")
выполняется, поэтому он печатает 3
. Затем printf("2")
выполняется, печать 2
. Потому что printf()
возвращаемое значение-это количество печатаемых символов, которое в данном случае равно 1
, и потому что 1
является ненулевым значением, цикл продолжается в теле. Первое утверждение в теле-это break
, что означает выход из цикла. Таким образом, цикл завершается. Таким образом, результат на экране выглядит так 32
printf("3")
вызывается при инициализации цикла for.
printf("2")
вызывается, чтобы узнать, должна ли завершиться итерация цикла.
Функция printf() возвращает количество печатаемых символов, равное 1 в обоих случаях, поэтому цикл решает выполнить.
Тело цикла просто break
, таким образом, цикл завершается в этой точке, и программа завершается.