Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2009, 16:28   #1
Hanickii
Пользователь
 
Аватар для Hanickii
 
Регистрация: 08.09.2009
Сообщений: 28
Сообщение цикл for

Обьясните плиз как работает цыкл не могу понять и нигде не описанно(

например такой код

Код:
main()
{
  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.

Обьясните кто нить у мну не написано ответа на мой вопрос

Последний раз редактировалось Sazary; 18.09.2009 в 18:31.
Hanickii вне форума Ответить с цитированием
Старый 18.09.2009, 16:40   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Во-первых, правильно будет цИкл.
Во-вторых, x++ увеличивает x на единицу, но возвращает неувеличенное значение (напр., x = 1; y = x++; z = x; будет y == 1, z ==2)
Т.е. в теле цикла используется еще неизмененное значение.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 18.09.2009, 16:53   #3
LaptevVV
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 37
По умолчанию

1. На первом шаге единственный раз объявляется и инициализируется переменная цикла x. Потом выполняется проверка x<=10. Условие истинно, поэтому выполняется тело цикла.
2. После выполнения тела, на втором и последующих шагах:
х++;
x <= 10;
тело цикла
Именно в таком порядке.
LaptevVV вне форума Ответить с цитированием
Старый 18.09.2009, 16:55   #4
Hanickii
Пользователь
 
Аватар для Hanickii
 
Регистрация: 08.09.2009
Сообщений: 28
По умолчанию

Да но x++ єто же не проверка, а значит должно работать как обычная операция цикла, тоесть x+1 и дальше.Ведь x++ некому не возвращает значение!
Hanickii вне форума Ответить с цитированием
Старый 18.09.2009, 16:58   #5
LaptevVV
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 37
По умолчанию

х++ в данном случае просто увеличивает значение х на 1.
LaptevVV вне форума Ответить с цитированием
Старый 18.09.2009, 17:15   #6
Hanickii
Пользователь
 
Аватар для Hanickii
 
Регистрация: 08.09.2009
Сообщений: 28
Сообщение

Ну я по этому и говорю какая разница тут какая форма постфиксаная или префиксная всё равно увеличение на 1 должна идти в тело цикла.
Hanickii вне форума Ответить с цитированием
Старый 18.09.2009, 19:14   #7
rangerx
Пользователь
 
Регистрация: 30.05.2009
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Hanickii Посмотреть сообщение
Ну я по этому и говорю какая разница тут какая форма постфиксаная или префиксная
Никакой(если не считать бесполезную трату ресурсов при постфиксной записи)
Цитата:
Сообщение от Hanickii Посмотреть сообщение
всё равно увеличение на 1 должна идти в тело цикла.
Начианя со второго шага.

первый шаг цикла:
инициализация(int x=1)
сравнение(x<=10)
выполненяется тело цикла(или не выполняется, естественно, в зависимости от предыдущего условия)
второй шаг цикла(и последующие)
инкремент(x++)
сравнение(x<=10)
опять же выполненяется тело цикла(или не выполняется...)
rangerx вне форума Ответить с цитированием
Старый 18.09.2009, 19:41   #8
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от rangerx Посмотреть сообщение
Никакой(если не считать бесполезную трату ресурсов при постфиксной записи)
Если в случае интерпретации это ещё звучит достаточно правдоподобно, то уж любой нормальный компилятор скомпилит это одинаково.
Somebody вне форума Ответить с цитированием
Старый 18.09.2009, 20:17   #9
Hanickii
Пользователь
 
Аватар для Hanickii
 
Регистрация: 08.09.2009
Сообщений: 28
Сообщение

Цитата:
Сообщение от rangerx Посмотреть сообщение
Никакой(если не считать бесполезную трату ресурсов при постфиксной записи)
А можно поинтересоваться где там безполезная трата ресурсов?

Последний раз редактировалось Hanickii; 18.09.2009 в 20:32.
Hanickii вне форума Ответить с цитированием
Старый 18.09.2009, 23:32   #10
GonZaleZ
Пользователь
 
Регистрация: 19.06.2009
Сообщений: 57
По умолчанию

1. вводишь переменную-счётчик
2. проверяешь значение переменной-счётчика
3. выполняешь тело цикла...
4. увеличиваешь счётчик на 1 (если оператор ++ постфиксный), если же имеется ++x, то сначала увеличивается х, а потом выполняется тело цикла
GonZaleZ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цикл Aqil_f Microsoft Office Excel 2 10.06.2009 15:40
цикл if... then..else DeDoK Общие вопросы Delphi 8 11.10.2008 11:31
Цикл Sota Паскаль, Turbo Pascal, PascalABC.NET 1 24.03.2008 19:50
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34