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

Почему не срабатывает инкремент? - C++

Восстановить пароль Регистрация
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
02.08.2013, 18:38     Почему не срабатывает инкремент? #1
В комментарии показал вывод программы. Все переменные почему равны 2
Получается инкремент не оказывает никакого влияния?

C++
1
2
3
4
5
int     a=0, b=0, c=0;
 
c = ++a = b = 2;
 
std::cout << a << " " << b << " " << c;  // 2 2 2
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.08.2013, 18:41     Почему не срабатывает инкремент? #2
Присваивание работает справа на лево
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
02.08.2013, 18:43     Почему не срабатывает инкремент? #3
Потому что сначала a увеличивается ++'ом, а потом уже туда записывается 2.
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
02.08.2013, 18:44  [ТС]     Почему не срабатывает инкремент? #4
DiffEreD, все равно непонятно, почему переменная a не изменяется. Ведь ++a
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
02.08.2013, 19:00     Почему не срабатывает инкремент? #5
C++
1
c = ++a = b = 2;
C++
1
2
3
4
b = 2;
++a;
a = b;
c = a;
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
02.08.2013, 19:07  [ТС]     Почему не срабатывает инкремент? #6
Somebody, да, я понял. Переменная a сначала увеличивается на единицу а потом идет присваивание a = b;
maxii
1 / 1 / 0
Регистрация: 28.12.2011
Сообщений: 223
27.09.2013, 04:07     Почему не срабатывает инкремент? #7
Подскажите если х=4, то операция y=++х, приведет к какому результату, какие значение будут иметь х,y. То есть хочеться знать какая разница между х++ и ++х, и как это влияет на y. То есть идет лиш присваевание?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
27.09.2013, 09:54     Почему не срабатывает инкремент? #8
Цитата Сообщение от maxii Посмотреть сообщение
если х=4, то операция y=++х, приведет к какому результату, какие значение будут иметь х,y
Код
x==5
y==5
Цитата Сообщение от maxii Посмотреть сообщение
какая разница между х++ и ++х
Пост- и пре- инкремент. Сначала получить значение переменной, а потом ее инкрементировать, либо наоборот, соответственно.
В вашем предыдущем примере если б было
Код
x=4, y=x++
то было бы
Код
x==5
y==4
Почитайте еще про UB.
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
27.09.2013, 10:06     Почему не срабатывает инкремент? #9
Цитата Сообщение от BigLow Посмотреть сообщение
c = ++a = b = 2;
Для того что ты хочешь получить нужна такая запись (только Си++):
C++
1
c = ++(a = b = 2);
rain_and_abyss
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 35
27.09.2013, 10:37     Почему не срабатывает инкремент? #10
Цитата Сообщение от BigLow Посмотреть сообщение
Somebody, да, я понял. Переменная a сначала увеличивается на единицу а потом идет присваивание a = b;
ты сам себя в такой формулировке запутал, вот и не разобрался сразу в чём дело.
машине пофиг как ты что запишешь, а вот для человека нет.
maxii
1 / 1 / 0
Регистрация: 28.12.2011
Сообщений: 223
27.09.2013, 10:37     Почему не срабатывает инкремент? #11
Мой вопрос касался использования в джава-но думаю там как в плюсах. Но как ни странно вы внесли ясность более в постинкремент. Ибо я думал что как раз как раз y будет 5, а х 4, ибо скорее воспринимал х++ более как операцию x+1, а не х=х+1. На примере вышло более доходшиво?
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
27.09.2013, 12:28     Почему не срабатывает инкремент? #12
Цитата Сообщение от maxii Посмотреть сообщение
Подскажите если х=4, то операция y=++х, приведет к какому результату, какие значение будут иметь х,y. То есть хочеться знать какая разница между х++ и ++х, и как это влияет на y. То есть идет лиш присваевание?
y=++x; // if x=4 then x=5, y=5 like y=x+=1;
y=x++; // if x=4 then x=5, y=4 like y=x, ++x;

Цитата Сообщение от maxii Посмотреть сообщение
Мой вопрос касался использования в джава-но думаю там как в плюсах.
Относительно твоего вопроса (про префиксную и постфиксную формы) - да.
Относительно моего ответа в теме про ++(a=b) - нет - только Си++ поддерживает такой синтаксис, не Си, не С# и не Джава.
maxii
1 / 1 / 0
Регистрация: 28.12.2011
Сообщений: 223
27.09.2013, 22:11     Почему не срабатывает инкремент? #13
А как тогда на яве. Что иначе. Кажется аналогично. В интернете смотрел. То есть результат не будет 5;5?
Qwertiy
817 / 625 / 75
Регистрация: 20.08.2013
Сообщений: 2,525
27.09.2013, 23:05     Почему не срабатывает инкремент? #14
Цитата Сообщение от maxii Посмотреть сообщение
А как тогда на яве. Что иначе. Кажется аналогично. В интернете смотрел. То есть результат не будет 5;5?
Я же сказал, что будет то же самое:
Цитата Сообщение от Qwertiy Посмотреть сообщение
Относительно твоего вопроса (про префиксную и постфиксную формы) - да.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2013, 16:25     Почему не срабатывает инкремент?
Еще ссылки по теме:

C++ Указатели: почему так происходит? Постфиксный и префиксный инкремент
While срабатывает 2 раза, почему? C++
Почему не срабатывает EOF C++

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

Или воспользуйтесь поиском по форуму:
SergeyTszyu
0 / 0 / 1
Регистрация: 18.03.2013
Сообщений: 19
28.09.2013, 16:25     Почему не срабатывает инкремент? #15
сначала переменная a инкреминтиреутся , а потом она уже равна 2 .
Yandex
Объявления
28.09.2013, 16:25     Почему не срабатывает инкремент?
Ответ Создать тему
Опции темы

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