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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2011, 22:21   #1
R8D8
Новичок
Джуниор
 
Регистрация: 01.06.2011
Сообщений: 2
Вопрос Оператор декремента

Добрій вечер.
Помогите разобратся.
Начал изучать С++.
Дошел до циклов.
Вообщем оператор while
int Loopcounter=5
while( Loopcounter-->0)
{
cout <<"Что-то пишет на экране\n"
}
...
В книге написано если использовать такую запись то Loopcounter-- , при вводе значения
Loopcounter=1 цикл пройдет один раз, а если --Loopcounter то цикл не будет проходить, так как вначале значение переменной уменшится а потом сравнится с нулем, это я понимаю.
Но почему, при записи while( Loopcounter-->0) значение не уменшится и сравнится, тоесть опереатор декркмента проскакивается, или я совсем запутался. По идеии он всеравно должен уменшится, иначе получается первый раз он не уменшается, а потом уменшается.
Помогите пожалуйста понять.Заранее благодарен
R8D8 вне форума Ответить с цитированием
Старый 02.06.2011, 00:01   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Сначала произойдет проверка условия, а потом декремент.
То есть, если ты сразу после проверки выведешь значение переменной, оно будет на единицу меньше начального.
Точно так же, как, например, тут:
Код:
int i = 5;
A[i--] = 10;           // A[5] = 10
cout << i << endl; // i = 4
A[--i] = 20;           // A[3] = 20
cout << i << endl; // i = 3
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 02.06.2011, 01:12   #3
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Все просто. После декремента на место переменной подставляется ее значение. Если декремент постфиксный - подставляется значение ПЕРЕД изменением, если преффиксный - ПОСЛЕ изменения. То есть:
Код:
i = 5;
if (i++ < 0) //i действительно стала на единицу больше, то есть i=6, но в условии участвует старое значение (пять)
Код:
i = 5;
if (++i < 0) //i действительно стала на единицу больше, то есть i=6, и в условии участвует новое значение (шесть)
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 02.06.2011, 09:58   #4
R8D8
Новичок
Джуниор
 
Регистрация: 01.06.2011
Сообщений: 2
Хорошо

Спасибо больщое всем за помощь, разобрался с вопросом.
R8D8 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оператор выбора или условный оператор[Перенесено из JavaSE] merhaba1992 Помощь студентам 1 20.01.2011 17:06
Условный оператор. Оператор выбора. Pascal Сержuk Помощь студентам 4 17.11.2010 12:50
Вычислить используя, оператор цикла for и оператор безусловного пе Knubbe Помощь студентам 1 18.12.2009 10:24
программу с примерами постфиксной и префиксной формами инкремента и декремента Angel of death Помощь студентам 3 17.11.2009 18:13