Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 5.00
Andrey96
1 / 1 / 0
Регистрация: 23.12.2010
Сообщений: 105
#1

Инкремент и преинкремент - C++

04.11.2012, 01:17. Просмотров 4232. Ответов 4
Метки нет (Все метки)

Здравствуйте. Я вот решил протестить в чем разница между инкрементом и преинкрементом, и как-то не увидел разницы... В чем же разница?
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
int main(){
    int l=0;
    for(int i=0;i<10;i++){
        l+=i;
        cout<<l<<endl;
    }
   // cout<<l;
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
int main(){
    int l=0;
    for(int i=0;i<10;++i){
        l+=i;
        cout<<l<<endl;
    }
   // cout<<l;
    return 0;
}
Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 01:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Инкремент и преинкремент (C++):

Какая операция быстрее, постинкремент, или преинкремент? - C++
какая операция быстрее: постинкремент, или преинкремент? и почему? как их можно записать на ассемблере?

Инкремент в рекурсии - C++
Ребят, что-то не могу врубиться. Задача: используя рекурсию выводить введенный ранее текст в обратном порядке. Вот рабочая версия: ...

Инкремент переменной - C++
в задании сказано, что пользователь вводит строку и программа выводит ее, но если пользователь вводит еще и цифру, то программа должна...

Не работает инкремент - C++
repeat: if(e&lt;=mode){ cout &lt;&lt; &quot;\nИгрок №&quot; &lt;&lt; e &lt;&lt; a &lt;&lt; endl; cin &gt;&gt; sim &gt;&gt; b;//записываем в строку для...

Инкремент в произведении - C++
Друзья, на ерунде запнулся, допустим: n = 2000; тогда в какой последовательности нужно решать вот это выражение: --n*n*n = ? ...

Инкремент ссылки - C++
int arr = {....} ; while(arr) // arr ссылка на начало массива то есть на 0 элемент ; { //тело цикла ++arr ;//инкремент } ...

4
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
04.11.2012, 01:27 #2
в данном случае разницы нет.
C++
1
2
3
i = 0;
k = ++i; // k = 1, i = 1
k =  i++; // k = 1, i = 2
т.е. ++i сначало увеличивает значение, а потом его "возвращает", а i++ сначало "возвращает", а потом уже увеличивает (если точнее, то значение запоминается в буфферной переменной, затем старая переменная увеличиваетсяя, а значение буфферной возвращается)

Добавлено через 2 минуты
в книжке написано, что ++i эффективнее использовать, чем i++, т.к в первом случае на 1 операцию меньше выходит:
увеличить значение, вернуть его,
запомнить значение, увеличить старое, вернуть запомненное
но это уже маразм
1
СашаН
268 / 268 / 86
Регистрация: 15.03.2012
Сообщений: 596
Записей в блоге: 1
04.11.2012, 01:35 #3
Вот рабочий пример.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main(){
    int l=0;
    for(int i=0;i<10;i++){
        l = i;
        cout << l << ' ';
        cout << ++l << ' ';
        cout << l++ << ' ';
        cout << l << endl;
    }
   // cout<<l;
    return 0;
}
1
Andrey96
1 / 1 / 0
Регистрация: 23.12.2010
Сообщений: 105
04.11.2012, 01:46  [ТС] #4
Цитата Сообщение от ZoRT Посмотреть сообщение
т.е. ++i сначало увеличивает значение, а потом его "возвращает", а i++ сначало "возвращает", а потом уже увеличивает (если точнее, то значение запоминается в буфферной переменной, затем старая переменная увеличиваетсяя, а значение буфферной возвращается)
Это мне то понятно...

Цитата Сообщение от ZoRT Посмотреть сообщение
в данном случае разницы нет
А здесь почему ???
0
dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
04.11.2012, 02:09 #5
Цитата Сообщение от Andrey96 Посмотреть сообщение
А здесь почему ???
Потому что в данном случае инкрементация или преинкрементация выполняется после окончания одного шага цикла и как бы выходит что мы не возвращаем значения а выполняем увеличение значения переменной, пока не выполнится действие значение возвращать не нужно, выходит что:
i = 0 присвоение
сравнивание i < 10
выполнение шага цикла
инкремент и вновь сначало выполняем сравнивание
1
04.11.2012, 02:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2012, 02:09
Привет! Вот еще темы с ответами:

постфиксный инкремент - C++
class Inkrement { Inkrement(){}; Inkrement &amp;operator++(int) { Inkrement temp = *this; ++*this; return temp; ...

Инкремент указателя - C++
#include &lt;iostream&gt; using namespace std; class Student { public: Student(){A=B=C=2;} int getA(){return A;} ...

Инкремент(Декремент) - C++
Есть ли разница,какую употреблять форму:префиксную или постфиксную? Если на экран выводится одно и то же число в префиксной и постфиксной...

Инкремент. Где ошибка - C++
Привет, помогите плз с кодом, некорректный результат инкремента..( #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru