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

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

Войти
Регистрация
Восстановить пароль
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
#1

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

02.08.2013, 18:38. Просмотров 737. Ответов 14
Метки нет (Все метки)

В комментарии показал вывод программы. Все переменные почему равны 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2013, 18:38     Почему не срабатывает инкремент?
Посмотрите здесь:

Указатели: почему так происходит? Постфиксный и префиксный инкремент - C++
В общем, вот код программы double q; for (int i(0);i&lt;10;i++) { q=i; } cout&lt;&lt;q&lt;&lt;endl; double* d=q; cout&lt;&lt;d&lt;&lt;&quot;...

Почему не срабатывает getline() ? - C++
Все привет почему то не срабатывает первый getline string comp_; cout &lt;&lt; &quot;1. Название: &quot; &lt;&lt; endl; getline(cin, comp_); cout...

Не срабатывает условие. Почему? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int _tmain(int argc, _TCHAR* argv) { ...

Почему не срабатывает EOF - C++
У меня стоит Visual Studio 2010 написал простенькую программу #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; int main() { int...

While срабатывает 2 раза, почему? - C++
Сообственно код void main() { while(true){ cout&lt;&lt;&quot;|y|&quot;; _getch(); }

Почему срабатывает rtl - C++
Не могу понять, в чем ошибка. Брат делает задания из одной книги и на одной из функций VC++ падает. Я уже долго не работал с C++, может...

Почему не срабатывает if, если истина? - C++
Вообщем задание на двумерную динамику. Есть 2 кучки камней. Входной файл содержит 3 строчки в первых двух - команды которые можно...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1429 / 766 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.08.2013, 18:41     Почему не срабатывает инкремент? #2
Присваивание работает справа на лево
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 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
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,189
Завершенные тесты: 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
Сообщений: 226
27.09.2013, 04:07     Почему не срабатывает инкремент? #7
Подскажите если х=4, то операция y=++х, приведет к какому результату, какие значение будут иметь х,y. То есть хочеться знать какая разница между х++ и ++х, и как это влияет на y. То есть идет лиш присваевание?
SatanaXIII
Супер-модератор
Эксперт С++
5594 / 2628 / 240
Регистрация: 01.11.2011
Сообщений: 6,472
Завершенные тесты: 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
818 / 626 / 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
Сообщений: 226
27.09.2013, 10:37     Почему не срабатывает инкремент? #11
Мой вопрос касался использования в джава-но думаю там как в плюсах. Но как ни странно вы внесли ясность более в постинкремент. Ибо я думал что как раз как раз y будет 5, а х 4, ибо скорее воспринимал х++ более как операцию x+1, а не х=х+1. На примере вышло более доходшиво?
Qwertiy
818 / 626 / 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
Сообщений: 226
27.09.2013, 22:11     Почему не срабатывает инкремент? #13
А как тогда на яве. Что иначе. Кажется аналогично. В интернете смотрел. То есть результат не будет 5;5?
Qwertiy
818 / 626 / 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++
#include &lt;iostream&gt; #include &lt;clocale&gt; using namespace std; struct box { char mak; float m; float n; float y; float...

Почему не срабатывает конструктор копирования в пользовательском классе - C++
вроде со всем разобралась, но не заходит в конструктор копирования. В чём ошибка? #include &lt;iostream&gt; #include &quot;welcome.h&quot; ...

Почему не срабатывает услоивие ни в одну ни в другую сторону - C++
mingw char S1=&quot;Hello&quot;; char S2={}; cin.getline(S2,255); if (S1==S2) cout&lt;&lt;&quot;OK&quot;; else cout&lt;&quot;NO&quot;; Не выводит...

Не срабатывает условие в цикле while не могу понять почему - C++
При решении задачки в которой необходимо сделать игру Однорукий Бандит, наткнулся при тестировании что одно из условий цикла while не...

Непонятно почему каждый раз срабатывает исключение - C++
Почему-то кажддый раз срабатывает исключение invalid_argument, даже когда ввожу числа, удовлетворяющие условию #include &lt;iostream&gt; ...


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

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

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