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

Разница между i++ и ++i.Си - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 349, средняя оценка - 4.87
Doctor_
 Аватар для Doctor_
232 / 232 / 69
Регистрация: 03.02.2011
Сообщений: 1,405
27.10.2011, 11:28     Разница между i++ и ++i.Си #1
Можете объяснить разницу между i++ и ++i на просто примере с цифрами?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2011, 11:28     Разница между i++ и ++i.Си
Посмотрите здесь:

C++ Разница между 0 и 00 ?
В чем разница между С и С++ C++
вчем разница между с++ и ++с C++
C++ Разница между != и <=
Разница между программами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VenCarbon
32 / 31 / 3
Регистрация: 14.12.2010
Сообщений: 158
27.10.2011, 11:41     Разница между i++ и ++i.Си #2
C
1
2
3
4
5
6
int x = 5;
int y;
 
y = ++x; // y = 6, x = 6:  сначала увеличивается x на 1, потом y = x.
y = --x; // y = 5, x = 5: сначала уменьшается x на 1, потом y = x.
y = x++; // y = 5, x = 6: сначала присваивается значение y = x, потом x увеличивается на 1.
все дело в приоритете операций) ++x - выполняется сначала, x++ - потом, после всех остальных операций.
aas_
0 / 0 / 0
Регистрация: 26.10.2011
Сообщений: 7
27.10.2011, 12:07     Разница между i++ и ++i.Си #3
Цитата Сообщение от VenCarbon Посмотреть сообщение
C
1
2
3
4
5
6
int x = 5;
int y;
 
y = ++x; // y = 6, x = 6:  сначала увеличивается x на 1, потом y = x.
y = --x; // y = 5, x = 5: сначала уменьшается x на 1, потом y = x.
y = x++; // y = 5, x = 6: сначала присваивается значение y = x, потом x увеличивается на 1.
все дело в приоритете операций) ++x - выполняется сначала, x++ - потом, после всех остальных операций.
Не знаю насчет C++, но про C точно помню, x++ и ++x одинаковый приоритет имеют. Разница только в возвращаемом значении, а не приоритете
VenCarbon
32 / 31 / 3
Регистрация: 14.12.2010
Сообщений: 158
27.10.2011, 12:30     Разница между i++ и ++i.Си #4
Цитата Сообщение от aas_ Посмотреть сообщение
Не знаю насчет C++, но про C точно помню, x++ и ++x одинаковый приоритет имеют. Разница только в возвращаемом значении, а не приоритете
В выражениях типа
C
1
2
3
int i = 0;
for (i = 0; i < n; i++) { // здесь можно написать (i = 0; i < n; ++i)
}
действительно, не играет роли.

Но в выражениях типа
C
1
j = (k++) - (--i)
как раз важно, где поставлен инкремент/декремент. значение j будет разным. попробуйте поиграть с такими вещами)
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.10.2011, 12:40     Разница между i++ и ++i.Си #5
Цитата Сообщение от aas_ Посмотреть сообщение
Не знаю насчет C++, но про C точно помню...
В java, С, С++, С# операции инкремента и декремента могут быть в префиксном и постфиксном вариантах. Так вот если выражение простое, то это одно и тоже, а вот если выражение составное, то результат зависит от формы данных операций.
Splitter
 Аватар для Splitter
201 / 143 / 5
Регистрация: 13.01.2009
Сообщений: 554
27.10.2011, 12:46     Разница между i++ и ++i.Си #6
Цитата Сообщение от VenCarbon Посмотреть сообщение
В выражениях типа
Код C
1
2
3
int i = 0;
for (i = 0; i < n; i++) { // здесь можно написать (i = 0; i < n; ++i)
}
действительно, не играет роли.
тут тоже могут быть свои ньюансы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2011, 18:12     Разница между i++ и ++i.Си
Еще ссылки по теме:

C++ Разница между С и С++
C++ В чем разница между X x; и X x()?
C++ В чем разница между [] и * ?

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

Или воспользуйтесь поиском по форуму:
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
27.10.2011, 18:12     Разница между i++ и ++i.Си #7
Цитата Сообщение от VenCarbon Посмотреть сообщение
++x - выполняется сначала, x++ - потом, после всех остальных операций.
Цитата Сообщение от VenCarbon Посмотреть сообщение
y = x++; // y = 5, x = 6: сначала присваивается значение y = x, потом x увеличивается на 1.
Это не так. Рассмотрим код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
 
class A {
public:
    A &operator= (const A &rhs)
    {
        if (this == &rhs)
            return *this;
        std::cout << "operator=\n";
        return *this;
    }
    A operator++ (int)
    {
        std::cout << "postfix operator++\n";
        return *this;
    }
};
 
int main()
{
    A x, y;
 
    x = y++;
 
    return 0;
}
вывод
postfix operator++
operator=


Разница в том что постфиксная форма возвращает старое значение обьекта, а префиксная уже измененное.
Но приоритет и порядок вычисления операторов тот же самый.
Yandex
Объявления
27.10.2011, 18:12     Разница между i++ и ++i.Си
Ответ Создать тему
Опции темы

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