#23. Оператор цикла for | Язык C для начинающих

preview_player
Показать описание


Порядок работы оператора цикла for с предусловием. Примеры использования этого оператора.
Рекомендации по теме
Комментарии
Автор

Спасибо за прекрасный урок ! В Вашей интерпретации материал заходит на одном дыхании.

vladimirastrelin
Автор

Каждый раз смотрю ваши уроки с удовольствием! Спасибо

ityosni
Автор

можно ещё вот так извратиться🙂
for(int i = 0; ++i, i <= 10;)
printf("%d", i);

weerbox
Автор

можно по подробнее про последний пример, как именно происходит изменение значения x?
Он типа просто исключает цифру которая зарандомилась, или как?

npqneiw
Автор

Есть ли разница в префиксном и посфиксном инкременте в цикле фор росле условия (++i или i++)?

chinarulit
Автор

8:05 В стандарте C99 сказано:
for ( clause-1 ; expression-2 ; expression-3 ) statement
If clause-1 is a declaration, the scope of any identifiers it declares is the remainder of the declaration and the entire loop, including the other two expressions;
Т.е. по стандарту объявленная в заголовке переменная for(int i=1;i<=n;i++) не должна быть доступна за пределами цикла. Другое дело, если она там не объявлена, а просто выполнен оператор присваивания, т.е. написано что-то вроде for(i=1;i<=n;i++) {...}. Тогда она может быть доступна и за пределами цикла.
Еще может быть вариант
int i=100;
printf("i=%d \n", i);
for(int i=1;i<=5;i++) printf("%d ", i);
printf("\ni=%d \n", i);
Тогда переменная i, объявленная в заголовке цикла, заслоняет собой внешнюю i=100, а после окончания цикла внутренняя исчезает и по имени i доступна снова внешняя. Поэтому получим результат:
i=100
1 2 3 4 5
i=100

olegkomlev
Автор

Нужно быть осторожным, если в цикле for нужно выполнить итерации на границе диапазона значений переменной. Например, нужно что-то сделать для всех значений байта 0-255.
Цикл
unsigned char i;
for(i=0;i<=255;i++) printf("%d ", i);
будет выполняться бесконечно.
Интересно, что аналогичный цикл в ТурбоПаскале
byte i;
for i:=0 to 255 do write( i, ' ');
выведет все числа от 0 до 255 и остановится.

olegkomlev
Автор

Добрый день . скажите в чем разница ++i ; i++ приведите пример пожалуйста.

xbgfxcr
Автор

int x, y = 1;
if(scanf("%d", &x) != 1 || x < 0) {
printf("Incorrect input\n");
return 0;
}
for(; x > 0; y *= x; --x)
{ }

printf("y = %d\n", y);

return 0;

alittleprince
Автор

Добрый день, спаисибо за отличные метериалы. Обратил внимание что в For операцию декремента n вы всегда пишите слева. Насколько это принципиально для for?

ruzoompartygmail