инкремент и декремент



Постфиксный и префиксный инкремент

Автор Chaz Ashley задал вопрос в разделе Другие языки и технологии

Какая разница между пред и постинкрементом? и получил лучший ответ

Ответ от Krab Вark[гуру]
Architector это сказал - если ты имеешь в виду сегодня и на "Ответах". И был прав. В некоторых случаях прединкремент в цикле позволяет компилятору в большей степени оптимизировать его выполнение. Впрочем, в твоих программах заметной разницы практически ты не увидишь.
P.S. Вот тебе полная информация по этому вопросу:
"Прединкремент и постинкремент.
Используйте префиксную форму (++i) операторов инкремента и декремента с итераторами и прочими шаблонными объектами.
Плюсы: Когда возвращаемое значение игнорируется "пре" форма (++i) никогда не бывает менее эффективной, чем "пост" форма (i++), а зачастую является более эффективной. Это так потому, что постинкремент (или декремент) требует создания копии i (значения выражения) . Если i является итератором или любым другим не скалярным типом, копирование i может быть дорогостоящей операцией. Поскольку оба варианта равнозначны, когда значение игнорируется, то почему бы не использовать всегда прединкремент?
Минусы: По традиции, когда значение выражения не учитывалось, в С использовался постинкремент, особенно в циклах for. Кому то постинкремент кажется более простым для чтения, поскольку "объект" (i) предшествует "глаголу" (++), как это принято в английском языке.
Решение: для простых скалярных (не объектных) значений не имеет значения какую из форму предпочесть и мы допускаем любую. Для итераторов и других шаблонных типов всегда используйте прединкремент. "

Ответ от Владимир[гуру]
Пред это когда число увеличивается до выполнения операции
Пост после выполнения операции.
Под операцией подразумевается резальтатирующий код

Ответ от Николай Веселуха[гуру]
Операции инкремента ++,и декримента -- являются унарными орперациями.
Инкремент постфиксный, увеличивает значение переменной на единицу
int x = 0, y = 0;
x++; // x => 1
x = 0;
y = x++; // y => 0, x => 1, то есть сначала присваивается значению переменной y значение переменной x, а затем x увеличивается на единицу
Есть префиксная форма инкремента
int x = 0, y = 0;
++x; // x => 1
x = 0;
y = ++x; // y => 1, x => 1, а здесь сначала x увеличивается на единицу, а затем происходит присваивание. Мелочь - но ВАЖНО!! !
-- Декремент - выполняет уменьшение на единицу по такому же принципу.
Префиксные формы обладают высшим приорететом, постфиксные - низшим.

Ответ от Андрей Кольцов[гуру]
Вот тебе наглядный пример:
...
int main()
{
int i=5;
cout << i << endl;//вывод числа 5
cout << i++ << endl;// опять же вывод числа 5, т. к использована постфиксная форма инкремента, а это значит, что в объект //cout будет послано значение еще не увеличенное на единицу .
cout << i << endl;//вот тут у тебя уже будет число 6 (пятерка увеличенная на единицу) ;
cout << ++i << endl; //в отличие от постфиксной формы, в префиксной он сразу увеличивает переменную i на единицу и
//выводит уже увеличенное значение переменной i (7)
system("pause");
return 0;
}

Ответ от Александр[гуру]
выражение х+=0 не совсем случай пред/пост-инкремента.
это лишь сокращение от х = х + 1
с таким же успехом можно написать х += 1000
инкрементдекремент подразумевают изменение значения переменной на +- 1
и когда пред/пост-инкремент рассматривается сам по себе, а не как часть выражения, то по барабану что там у вас пред- или пост-

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Какая разница между пред и постинкрементом?
Инкремент на Википедии
Посмотрите статью на википедии про Инкремент
Испанский сапог на Википедии
Посмотрите статью на википедии про Испанский сапог
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*