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

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

Войти
Регистрация
Восстановить пароль
 
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
#1

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

31.12.2012, 22:40. Просмотров 677. Ответов 14
Метки нет (Все метки)

Какая между этими программами разница? Почему они другие результаты выводят?
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");
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2012, 22:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разница между программами (C++):

Разница между двумя идентичными программами - C++
Объясните разницу между двумя абсолютно идентичными программами. Программа 1, в текстовом файле где записаны 10 слов, нужно поменять 1 ,...

Связь между программами - C++
У меня есть одна программа на C++. В ней следовательно есть несколько переменных (например int i = 3 и String c = &quot;test&quot;). Необходимо...

Взаимодействие между двумя программами - C++
Здравствуйте! Буду рад если кто сможет подсказать) Есть 2 программы. Одна написана на с#, другая на с++ mfc. Нужна наладить между ними...

Обмен данными между программами - C++
Здравствуйте Помогите сделать программу, чтобы при наборе все символов в сервере они сразу же отображались в клиенте, вот похожее, но...

Переключение между программами в source files - C++
Пусть имеется несколько программами в source files. Как запускать ту программу, которую мне нужно? А то компилируется программа, которая...

Взаимодействие между двумя скомпилироваными программами - C++
Скажите есть 2 скомпилированные программы!!!! как между ними передать текст?, запись в файл неподходит потому что появляется ошибка...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
31.12.2012, 22:42 #2
разные значния примет i в результате работы
1
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
31.12.2012, 22:45 #3
Операции инкримента и декримента почитайте.
1
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
31.12.2012, 22:45  [ТС] #4
А почему разные? Операции одни и те? Какая разница между префиксным и постфикскным инкрементом?
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 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/
1
v.a.l.i.d
413 / 378 / 10
Регистрация: 21.09.2012
Сообщений: 913
31.12.2012, 22:47 #6
Результат у всех разный. В VS 2010 выводит 14 13 12
1
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2013, 12:21 #7
Один инкремент сначала выполняется, а потом используется переменная, другой наоборот, а неопределённость по точкам следования в рамках одного компилятора врядли вообще имеет значение.

Добавлено через 4 минуты
Ещё разные компиляторы могут вести себя по-разному в таком аспекте: если инкремент используется до использования переменной, то один может сначала выполнить все инкременты, а потом всё подставить, а другой подставить каждый операнд сразу после именно его вычисления, а если инкременет выполняется после использования переменной, то какой то компилятор может выполнить инкремент одного операнда до подстановки второго, а другой оба инкремента после вычисления всего выражения.
0
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
01.01.2013, 12:22 #8
уже обсуждалось Загвоздка в значении переменной
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2013, 12:23 #9
Там между компиляторами, а здесь различие инкрементов на одном, это разные темы.
0
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
01.01.2013, 12:25 #10
Цитата Сообщение от taras atavin Посмотреть сообщение
Там между компиляторами, а здесь различие инкрементов на одном, это разные темы.
Действительно. Но, думаю, всё равно будет полезно.
0
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.01.2013, 12:32 #11
Цитата Сообщение от taras atavin Посмотреть сообщение
Там между компиляторами, а здесь различие инкрементов на одном, это разные темы.
А какая разница? Для всех 3 исходников ответ либо один(UB), либо континум - произойти от такого кода может что угодно. В том числе могут вывестись одинаковые числа, поэтому вопрос
Цитата Сообщение от tokar2 Посмотреть сообщение
Какая между этими программами разница? Почему они другие результаты выводят?
не имеет смысла
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2013, 12:34 #12
Цитата Сообщение от Croessmah Посмотреть сообщение
Но, думаю, всё равно будет полезно.
Согласен. Только не вместо, а дополнительно.
0
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++;
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2013, 13:41 #14
А чёрт его знает, что здесь происходит, сам Страуструп это не распарсит. Вот если бы не было неопределённости по стандарту, тогда и я бы распарсил.
1
Wolkodav
604 / 457 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
05.01.2013, 12:33 #15
А запустите отладчик, пару раз пройдёте все вот и распарсите))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2013, 12:33
Привет! Вот еще темы с ответами:

Как организовать обмен данными между двумя разными программами? - C++
Как организовать обмен данными между двумя разными программами? Интересует именно схема этого процесса. Предполагается обмен данными в...

Разница между С и С++ - C++
Если не брать во внимание объекты и классы, то разница состоит только лишь в cin, cout и директивах?

Разница между != и <= - C++
Здравствуйте! Писал программу с использованием QuickSort и заинтересовала такая вещь: void quickSort(int arr, int left, int right) { ...

Разница между if else и else if - C++
Привет, у меня возник &quot;нубский&quot; вопрос. Этот код, это же соркащенная версия нижнего? int i = 3; if (i == 1) ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.01.2013, 12:33
Ответ Создать тему
Опции темы

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