{
for (int x=1; x<=10; x++)
{
if (x==5)
break;
cout << x << endl;
}
return 0;
}
Результат выводит числа 1 2 3 4. Почему Цыкл прервался то понятно.
Не пойму как работает сама конструкция for (int x=1; x<=10; x++)
Тоесть проверяеться условие x=1 и цыкл работает покамисть x<=10 и при каждой итерации x++, но например при первом вхождении x++ тоесть он сразу становиться 2 тоесть результат скрипта должен быть
2 3 4.
Обьясните плиз детально как работает цикл. Буду рад любым обьяснениям.
Спустя 8 минут, 43 секунды (18.09.2009 - 17:14) glock18 написал(а):
Дима
x++ или третье выражение в объявлении цикла
отрабатывает каждую итерацию после первой, не включая ее.
На первой итерации выполняется только int x=1 - первое выражение.
x<=10 - выполняется на каждой итерации после того, как отработало первое или третье выражение, в зависимости от итерации.
Итого:
Первое выражение - инициализация цикла
Второе выражение - условие выполнения цикла
Третье выражение - инкрементация (читай увеличение, сдвиг, переход на следующий шаг и т.д.) цикла
Этот цикл должен и выведет
1
2
3
4
Вопрос, почему вы спрашиваете о том, как работает код, написанный на C++, на форуме по php?
x++ или третье выражение в объявлении цикла
отрабатывает каждую итерацию после первой, не включая ее.
На первой итерации выполняется только int x=1 - первое выражение.
x<=10 - выполняется на каждой итерации после того, как отработало первое или третье выражение, в зависимости от итерации.
Итого:
Первое выражение - инициализация цикла
Второе выражение - условие выполнения цикла
Третье выражение - инкрементация (читай увеличение, сдвиг, переход на следующий шаг и т.д.) цикла
Этот цикл должен и выведет
1
2
3
4
Вопрос, почему вы спрашиваете о том, как работает код, написанный на C++, на форуме по php?
Спустя 6 минут, 10 секунд (18.09.2009 - 17:21) Pinoplast написал(а):
<?
for (инициализация; действие; делай после прохода; )
{
Действия
}
?>
ИНИЦИАЛИЗАЦИЯ - ОБЯВЛЕНИЕ ПЕРЕМЕНЫХ ИЛИ ЧИСЕЛ
ДЕЙСТВИЕ НАД ПРЕМЕНЫМЫ(ПРОВЕРКА УСЛОВИЙ)
делай после прохода - что делать после цыкла
а считает с 1 потомучто помойму от нуля цыкл виполняеться, хотя могу ощыбаться потому сразу идет 1 а не 2
for (инициализация; действие; делай после прохода; )
{
Действия
}
?>
ИНИЦИАЛИЗАЦИЯ - ОБЯВЛЕНИЕ ПЕРЕМЕНЫХ ИЛИ ЧИСЕЛ
ДЕЙСТВИЕ НАД ПРЕМЕНЫМЫ(ПРОВЕРКА УСЛОВИЙ)
делай после прохода - что делать после цыкла
а считает с 1 потомучто помойму от нуля цыкл виполняеться, хотя могу ощыбаться потому сразу идет 1 а не 2
Спустя 17 минут, 48 секунд (18.09.2009 - 17:38) Дима написал(а):
Цитата |
x++ или третье выражение в объявлении цикла отрабатывает каждую итерацию после первой, не включая ее. |
Всё равно не понятно, в таком случае при первой итерации цикла х останется равным 1 и только при второй итерации начнёт х увеличивать на 1 и цикл произведет на 1 итерацию больше то есть не 10 а 11.
если читать слева на право код то сначала х присваивается 1 потом идет проверка меньше либо равно 10 и дальше просто иксу плюсуется 1.
Так как запись х++ не куда не присваивается то это обычное сложение х+1 и новое значение х должно пойти в цикл если читать код слева направо с верху в низ!
Сори всё равно не могу понять((
Цитата |
Вопрос, почему вы спрашиваете о том, как работает код, написанный на C++, на форуме по php? smile.gif |
PHP |
<?php |
Цикл всё равно записывается одинаково но в следующий раз буду писать так))
Спустя 7 минут, 15 секунд (18.09.2009 - 17:46) Дима написал(а):
Цитата |
а считает с 1 потомучто помойму от нуля цыкл виполняеться, хотя могу ощыбаться потому сразу идет 1 а не 2 |
Нет скорее всего потому что начальное значение 1.
В любом языке программирование цикл for считает не с 0, а с того что ты ему укажеш!
Спустя 10 минут, 39 секунд (18.09.2009 - 17:56) Pinoplast написал(а):
так у тебя нету указаной переменой которую увеличивать на единицу, у тебя только переменая для отсчета, нехватет, переменой увелечения или действия, а так как она у тебя не задана то цыкл берет ноль, у тебя задано х=1 количство повторов цыкла от 1 до 10 а переменую какую увеличить при исполнении нет, задай ее и переимену х++ на У++ и задай У= чемуто, вроде так
Спустя 1 минута, 4 секунды (18.09.2009 - 17:57) Pinoplast написал(а):
хотя могу ошыбаться сам учу пхп только пару месяцев гыгыгыгы
Спустя 2 минуты, 16 секунд (18.09.2009 - 18:00) glock18 написал(а):
Дима
Поведение такое, какое я описал. В цикле нигде не сказано, что итераций должно быть 10. Более того их не будет 10 (или 11, как вы почему то думаете).
Поведение такое, какое я описал. В цикле нигде не сказано, что итераций должно быть 10. Более того их не будет 10 (или 11, как вы почему то думаете).
Спустя 1 час, 38 минут, 9 секунд (18.09.2009 - 19:38) Дима написал(а):
Почему не будет, если break убрать то 10 получиться
Спустя 11 минут, 39 секунд (18.09.2009 - 19:49) glock18 написал(а):
Если убрать.
Там сказано, что будет выполняться пока x больше или равен 10 и ничего нет про то, сколько итераций будет.
замени
x++
на
x += 2
и итераций будет не 10, хотя в условии будет так же стоять 10.
Там сказано, что будет выполняться пока x больше или равен 10 и ничего нет про то, сколько итераций будет.
замени
x++
на
x += 2
и итераций будет не 10, хотя в условии будет так же стоять 10.
Спустя 3 часа, 18 минут, 9 секунд (18.09.2009 - 23:08) Дима написал(а):
Так так сказано что х будет увеличиваться ровно на 1. Значит следуя этому итераций будет 10
Спустя 53 секунды (18.09.2009 - 23:08) Дима написал(а):
Хотя чё спорить мы оба знаем про что говорим)) Спасибо за помощь!