Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 5.00
Andrey96
 Аватар для Andrey96
1 / 1 / 0
Регистрация: 23.12.2010
Сообщений: 105
04.11.2012, 01:17     Инкремент и преинкремент #1
Здравствуйте. Я вот решил протестить в чем разница между инкрементом и преинкрементом, и как-то не увидел разницы... В чем же разница?
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;
}
Заранее благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 01:17     Инкремент и преинкремент
Посмотрите здесь:

Инкремент(Декремент) C++
C++ Инкремент указателя
Какая операция быстрее, постинкремент, или преинкремент? C++
Инкремент ссылки C++
C++ Инкремент в рекурсии
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Venzo
 Аватар для 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 операцию меньше выходит:
увеличить значение, вернуть его,
запомнить значение, увеличить старое, вернуть запомненное
но это уже маразм
СашаН
 Аватар для СашаН
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;
}
Andrey96
 Аватар для Andrey96
1 / 1 / 0
Регистрация: 23.12.2010
Сообщений: 105
04.11.2012, 01:46  [ТС]     Инкремент и преинкремент #4
Цитата Сообщение от ZoRT Посмотреть сообщение
т.е. ++i сначало увеличивает значение, а потом его "возвращает", а i++ сначало "возвращает", а потом уже увеличивает (если точнее, то значение запоминается в буфферной переменной, затем старая переменная увеличиваетсяя, а значение буфферной возвращается)
Это мне то понятно...

Цитата Сообщение от ZoRT Посмотреть сообщение
в данном случае разницы нет
А здесь почему ???
dederkay
 Аватар для dederkay
34 / 34 / 0
Регистрация: 08.12.2010
Сообщений: 161
04.11.2012, 02:09     Инкремент и преинкремент #5
Цитата Сообщение от Andrey96 Посмотреть сообщение
А здесь почему ???
Потому что в данном случае инкрементация или преинкрементация выполняется после окончания одного шага цикла и как бы выходит что мы не возвращаем значения а выполняем увеличение значения переменной, пока не выполнится действие значение возвращать не нужно, выходит что:
i = 0 присвоение
сравнивание i < 10
выполнение шага цикла
инкремент и вновь сначало выполняем сравнивание
Yandex
Объявления
04.11.2012, 02:09     Инкремент и преинкремент
Ответ Создать тему
Опции темы

Текущее время: 08:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru