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

Разница между программами - C++

Восстановить пароль Регистрация
 
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
31.12.2012, 22:40     Разница между программами #1
Какая между этими программами разница? Почему они другие результаты выводят?
C++
1
2
3
4
5
6
7
8
9
#include <iostream.h>
 
int main()
{
    int i=5;
    i=++i + ++i;
    cout<<i;
    system("pause");
}
C++
1
2
3
4
5
6
7
8
9
#include <iostream.h>
 
int main()
{
    int i=5;
    i=i++ + ++i;
    cout<<i;
    system("pause");
}
C++
1
2
3
4
5
6
7
8
9
#include <iostream.h>
 
int main()
{
    int i=5;
    i=i++ + i++;
    cout<<i;
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2012, 22:40     Разница между программами
Посмотрите здесь:

Разница между i++ и ++i.Си C++
C++ Разница между 0 и 00 ?
C++ Разница между двумя идентичными программами
Обмен данными между программами C++
C++ Разница между != и <=
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
31.12.2012, 22:42     Разница между программами #2
разные значния примет i в результате работы
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
31.12.2012, 22:45     Разница между программами #3
Операции инкримента и декримента почитайте.
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
31.12.2012, 22:45  [ТС]     Разница между программами #4
А почему разные? Операции одни и те? Какая разница между префиксным и постфикскным инкрементом?
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,605
Записей в блоге: 17
31.12.2012, 22:46     Разница между программами #5
Тут результат один - "неопределенное поведение"

http://alenacpp.blogspot.com/2005/11...ce-points.html
http://blog.sjinks.pro/c-cpp/537-how-much-is-the-fish/
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
31.12.2012, 22:47     Разница между программами #6
Результат у всех разный. В VS 2010 выводит 14 13 12
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2013, 12:21     Разница между программами #7
Один инкремент сначала выполняется, а потом используется переменная, другой наоборот, а неопределённость по точкам следования в рамках одного компилятора врядли вообще имеет значение.

Добавлено через 4 минуты
Ещё разные компиляторы могут вести себя по-разному в таком аспекте: если инкремент используется до использования переменной, то один может сначала выполнить все инкременты, а потом всё подставить, а другой подставить каждый операнд сразу после именно его вычисления, а если инкременет выполняется после использования переменной, то какой то компилятор может выполнить инкремент одного операнда до подстановки второго, а другой оба инкремента после вычисления всего выражения.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11837 / 6816 / 771
Регистрация: 27.09.2012
Сообщений: 16,908
Записей в блоге: 2
Завершенные тесты: 1
01.01.2013, 12:22     Разница между программами #8
уже обсуждалось Загвоздка в значении переменной
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2013, 12:23     Разница между программами #9
Там между компиляторами, а здесь различие инкрементов на одном, это разные темы.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11837 / 6816 / 771
Регистрация: 27.09.2012
Сообщений: 16,908
Записей в блоге: 2
Завершенные тесты: 1
01.01.2013, 12:25     Разница между программами #10
Цитата Сообщение от taras atavin Посмотреть сообщение
Там между компиляторами, а здесь различие инкрементов на одном, это разные темы.
Действительно. Но, думаю, всё равно будет полезно.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.01.2013, 12:32     Разница между программами #11
Цитата Сообщение от taras atavin Посмотреть сообщение
Там между компиляторами, а здесь различие инкрементов на одном, это разные темы.
А какая разница? Для всех 3 исходников ответ либо один(UB), либо континум - произойти от такого кода может что угодно. В том числе могут вывестись одинаковые числа, поэтому вопрос
Цитата Сообщение от tokar2 Посмотреть сообщение
Какая между этими программами разница? Почему они другие результаты выводят?
не имеет смысла
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2013, 12:34     Разница между программами #12
Цитата Сообщение от Croessmah Посмотреть сообщение
Но, думаю, всё равно будет полезно.
Согласен. Только не вместо, а дополнительно.
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
01.01.2013, 13:38  [ТС]     Разница между программами #13
Не мог бы кто-то расписать пошагово что здесь происходит? Я немного путаюсь)
C++
1
2
int i=5;
    i= i++ + ++i + ++i + i++ + i++;
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2013, 13:41     Разница между программами #14
А чёрт его знает, что здесь происходит, сам Страуструп это не распарсит. Вот если бы не было неопределённости по стандарту, тогда и я бы распарсил.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2013, 12:33     Разница между программами
Еще ссылки по теме:

C++ Разница между С и С++
C++ Как организовать обмен данными между двумя разными программами?
Связь между программами C++

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

Или воспользуйтесь поиском по форуму:
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
05.01.2013, 12:33     Разница между программами #15
А запустите отладчик, пару раз пройдёте все вот и распарсите))
Yandex
Объявления
05.01.2013, 12:33     Разница между программами
Ответ Создать тему
Опции темы

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