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

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

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

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

31.12.2012, 22:40. Просмотров 667. Ответов 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");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2012, 22:40     Разница между программами
Посмотрите здесь:

Разница между двумя идентичными программами - 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 скомпилированные программы!!!! как между ними передать текст?, запись в файл неподходит потому что появляется ошибка...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
31.12.2012, 22:42     Разница между программами #2
разные значния примет i в результате работы
Wolkodav
601 / 454 / 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
7101 / 5278 / 267
Регистрация: 10.12.2010
Сообщений: 23,279
Записей в блоге: 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
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
31.12.2012, 22:47     Разница между программами #6
Результат у всех разный. В VS 2010 выводит 14 13 12
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2013, 12:21     Разница между программами #7
Один инкремент сначала выполняется, а потом используется переменная, другой наоборот, а неопределённость по точкам следования в рамках одного компилятора врядли вообще имеет значение.

Добавлено через 4 минуты
Ещё разные компиляторы могут вести себя по-разному в таком аспекте: если инкремент используется до использования переменной, то один может сначала выполнить все инкременты, а потом всё подставить, а другой подставить каждый операнд сразу после именно его вычисления, а если инкременет выполняется после использования переменной, то какой то компилятор может выполнить инкремент одного операнда до подстановки второго, а другой оба инкремента после вычисления всего выражения.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
01.01.2013, 12:22     Разница между программами #8
уже обсуждалось Загвоздка в значении переменной
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2013, 12:23     Разница между программами #9
Там между компиляторами, а здесь различие инкрементов на одном, это разные темы.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
01.01.2013, 12:25     Разница между программами #10
Цитата Сообщение от taras atavin Посмотреть сообщение
Там между компиляторами, а здесь различие инкрементов на одном, это разные темы.
Действительно. Но, думаю, всё равно будет полезно.
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.01.2013, 12:32     Разница между программами #11
Цитата Сообщение от taras atavin Посмотреть сообщение
Там между компиляторами, а здесь различие инкрементов на одном, это разные темы.
А какая разница? Для всех 3 исходников ответ либо один(UB), либо континум - произойти от такого кода может что угодно. В том числе могут вывестись одинаковые числа, поэтому вопрос
Цитата Сообщение от tokar2 Посмотреть сообщение
Какая между этими программами разница? Почему они другие результаты выводят?
не имеет смысла
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
Ушёл с форума.
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++
Не как него могу понять в чем разница между с++ и ++с ? с - счетчик. просто пример: int main() { int c = 0; // счетчик int k; ...

Разница между DEV и VS - C++
Подскажите пожалуйста в чем проблема, писал задания на DEV C++, теперь начал работать на VS, но они не работают там.

Разница между T **a и T *a[const_size] - C++
T c_a; // Здесь тип c_a это T(*) T **d_a = (T**) malloc(sizeof(T) * size); for (i = 0; i &lt; size; ++i) { d_a = (T*)...

разница между постинкрементом и преинкрементом - C++
не пойму разницу между count++ и ++count когда пишу count++, он выводит числа от 1 до 4, а когда пишу ++count, то он мне выводит числа от...

Разница между приведением типов - C++
Всем пт! Поясните плз разницу между приведениями типов: double (a); (double) a; static_cast &lt;double&gt; (a);


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

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

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