Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
newbew
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 31
#1

Ассоциативность инкремента декремента - C++

21.04.2015, 17:09. Просмотров 593. Ответов 6
Метки нет (Все метки)

Всем привет.
Вот такую табличку недавно нашел - http://ru.cppreference.com/w/cpp/language/operator_precedence
Почему префиксный инкремент и декремент - справа налево, а суффиксальный/постфиксный инкремент и декремент - слева направо.
i++ + i++ - слева направо
++i + ++i - справа налево
Где принципиальная разница, выполнится он слева на право или справа налево?
Не очень понимаю группу номер 3, в плане разности ассоциативности.
PS: Разницу между i++ и ++i понимаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2015, 17:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ассоциативность инкремента декремента (C++):

Использование инкремента(Декремента)
Есть три кнопки и три индикатора(лампочки). Если нажимаю кнопку-1 тогда...

Операторы инкремента и декремента
Создайте в классе Circle префиксный и постфиксный операторы инкремента и...

Вывод в поток и операция инкремента / декремента
При использовании следующего оператора вывода в поток: int n = 10; cout <<...

Постфиксная и префиксная форма инкремента и декремента.
Само задание: Написать программу с примерами постфиксной и префиксной формами...

Перегрузка оператора инкремента/декремента через friend
Нужно реализовать перегрузку унарного оператора через friend. Что я пытаюсь...

Префиксные и постфиксные операции инкремента и декремента + наследование
Дано: Два класса(Counter и CountDn), следует при помощи наследования добавить...

6
nmcf
6242 / 5554 / 2526
Регистрация: 14.04.2014
Сообщений: 23,349
21.04.2015, 17:23 #2
Имеется в виду направление действия оператора.
0
newbew
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 31
21.04.2015, 17:26  [ТС] #3
Я понимаю что такое ассоциативность, я не понимаю принципиальную разницу в 3тьей группе (в каком порядке они выполнятся)
0
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
21.04.2015, 20:20 #4
Лучший ответ Сообщение было отмечено newbew как решение

Решение

Цитата Сообщение от newbew Посмотреть сообщение
i++ + i++ - слева направо
++i + ++i - справа налево
Вы не на то право-лево подумали. Имеется в виду, что при применении к одному имени нескольких префиксных или нескольких постфиксных операторов они выполняются начиная от ближайшего к имени, например:
!-a
сначала минус, потом отрицание.
a()[5]
сначала вызов функции, потом переход по индексу.

Добавлено через 25 минут
Что-то приведенная табличка не совпадает с той, что у Страуструпа приведена, где условный оператор имеет более высокий приоритет, чем оператор присваивания.
1
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
21.04.2015, 20:27 #5
Лучший ответ Сообщение было отмечено newbew как решение

Решение

Страуструп вообще писал, что нельзя в одном выражениии
Цитата Сообщение от newbew Посмотреть сообщение
i++ + i++ - слева направо
++i + ++i - справа налево
Цитирую из книжки СТрауструпа
8.6.1. Вычисление выражения
Порядок вычисления подвыражений управляется правилами, которые больше
ориентируются на оптимизацию кода, чем на удобство работы программиста.
Это неудобно, но в любом случае следует избегать чрезмерно сложных выражений.
Помните простое правило: если изменяете значение переменной в выражении, то не
используйте его дважды в одном и том же выражении
.
0
newbew
0 / 0 / 0
Регистрация: 14.02.2015
Сообщений: 31
21.04.2015, 22:22  [ТС] #6
daslex, можете сказать название книги, страницу? (у Страуструпа не одна книга, вроде бы)
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
22.04.2015, 05:59 #7
Страуструп Б. - Программирование. Принципы и практика использования C++ - 2011
Глава 8
8.6. Порядок вычислений
ну а 8.6.1 то, что я процитировал там.
0
22.04.2015, 05:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2015, 05:59
Привет! Вот еще темы с решениями:

Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите.
#include <iostream> #include <string> using namespace std; int main ()...

Написать программу, которая демонстрирует разницу между операциями пре-декремента и пост-декремента
Написать программу, которая демонстрирует разницу между операциями...

Перегрузка декремента
Само условие звучит так. Написать функцию декремента единственного параметра....

Функция декремента
Вот функция которая декрементирует время, если в коде написать 59, то работает,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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