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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2009, 21:41   #1
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию небольшое уточнение

НЕ скажите, почему в результате переменная i = 11, а не 10, вот из этой простенькой программы.

Код:
#include <iostream>
using namespace std;

int main()
{
	setlocale(0,"");
	int i = 0, sum = 0;
	const int max = 10;
	for(i = 1; i<=max; i++)
	sum+=i;
	cout<<endl
		<<"Сумма = " <<sum
		<<endl
		<<"i = "<<i<<endl;
		cin.get();
		return 0;
}
Golovastik вне форума Ответить с цитированием
Старый 17.07.2009, 21:55   #2
A_r_r_a_y
Форумчанин
 
Аватар для A_r_r_a_y
 
Регистрация: 01.03.2008
Сообщений: 165
По умолчанию

в инициализации цикла ты присвоил i=1, поэтому i=11, чтобы было i=10 в цикле надо i=0
A_r_r_a_y вне форума Ответить с цитированием
Старый 17.07.2009, 22:02   #3
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Если прописать так
Код:
 for(i = 0; i<=max; i++)
будет также i = 11. ПОчему 11, а не 10, ведь подсчёт i происходит от нуля до десяти , а не до 11.
Golovastik вне форума Ответить с цитированием
Старый 17.07.2009, 22:09   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Потому что при i = 10 условие цикла выполняется, выполняется инкремент и уже при i = 11 условие не выполняется и проходим дальше.
Поменяйте условие на: i < max и i будет в конце равно 10, а не 11.
pu4koff вне форума Ответить с цитированием
Старый 17.07.2009, 22:13   #5
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Вроде всё ясно, как поставил вместо
Код:
 for(i = 0; i<=max; i++)
на
Код:
 for(i = 0; i<max; i++)
результат и получил 10. Но до сих пор не могу понять, ведь подсчёт должен происходить до 10, разве знак "=", даёт возможность подсчёта на 1 больше,чтоб затем накапливать в количестве int i = 0, .
Golovastik вне форума Ответить с цитированием
Старый 17.07.2009, 22:22   #6
A_r_r_a_y
Форумчанин
 
Аватар для A_r_r_a_y
 
Регистрация: 01.03.2008
Сообщений: 165
По умолчанию

ну смотри, при последнем прохождении цикла i=10 проверяется условие i<=10, выполняется и тело цикла выполняется еще раз, где i еще раз увеличивается
A_r_r_a_y вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Маленькое уточнение prikolist Общие вопросы C/C++ 4 27.04.2009 16:20
Небольшое тестирование merax Софт 3 17.08.2008 19:11
Уточнение корней при решении слау? RealNt Помощь студентам 3 29.10.2007 16:17