Ошибки, баги, вопросы - страница 162

 
mql5:

Проверили, результат получается x=1, y=0

Виноват, ошибся в описании результатов!

 
Ashes:

Виноват, ошибся в описании результатов!

Ключ :

https://www.mql5.com/ru/docs/basis/operations/rules

 

Документация по MQL5: Основы языка / Операции и выражения / Приоритеты и порядок операций
Документация по MQL5: Основы языка / Операции и выражения / Приоритеты и порядок операций
  • www.mql5.com
Основы языка / Операции и выражения / Приоритеты и порядок операций - Документация по MQL5
 
stringo:

В стандарте c++ это место не определено и явно сказано, что зависит от реализации. Существует 2 основные реализации:

1. Производить постинкремент(постдекремент) сразу после использования переменной в выражении. (как это сделано у нас)

2. Производить постинкремент после вычисления всего выражения.

Спорить не буду, но как-то режет  глаз, когда правая часть одинаковая, а результат вычисления получается разный...
 

x=0; y=0; x = y++;  // x = 1   !!!

x=0; y=0; y = y++;  // y = 0   !!!

Приоритет операций успел поменяться ? 

 
Ashes:

x=0; y=0; x = y++;  // x = 1   !!!

 

Как это? x=0, y=1
 

Совсем запутался!

x=0; y=0; x = y++;  // x = 0 ??? y= 1  !!!

x=0; y=0; y = y++;  //              y = 0  !!!

 
Ashes:

x=0; y=0; x = y++;  // x = 0 ??? y= 1  !!!

Совершенно правильно во всех без исключения реализациях постинкремента.

Если ходите того поведения, которого Вы, по-видимому, ожидаете, используйте преинкремент. x = ++y;

 
Ashes:

Совсем запутался!

x=0; y=0; x = y++;  // x = 0 ??? y= 1  !!!

x=0; y=0; y = y++;  //              y = 0  !!!

Раздел  Арифметические операции:

Сумма величин                           i = j + 2;
Вычитание величин                       i = j - 3;
Изменение знака                         x = - x;
Умножение величин                       z = 3 * x;
Частное от деления                      i = j / 5;
Остаток от деления                      minutes = time % 60;
Добавление 1 к значению переменной      i++;
Добавление  1 к значению переменной      ++i;
Вычитание  1 от значения переменной      k--;
Вычитание  1 от значения переменной      --k;

Операция инкремента и декремента применяются только к переменным, к константам не применяются. Префиксныe инкремент (++i) и декремент (--k) применяются к переменной непосредственно перед использованием этой переменной в выражении.

Постфиксные инкремент (i++) и декремент (k--) применяются к переменной сразу после использования этой переменной в выражении.

 
Rosh:

Раздел  Арифметические операции:

...
Постфиксные инкремент (i++) и декремент (k--) применяются к переменной сразу после использования этой переменной в выражении.
В обеих строках постфиксный инкремент. Результат  (y) разный. Получается, что зависит от контекста применения...
 
Ashes:
В обеих строках постфиксный инкремент. Результат  (y) разный. Получается, что зависит от контекста применения...
А Вы можете практически обосновать выражение x = x++; Чего сказать-то хотели? Почему не использовать инкремент без последующего присвоения x++; Как это обычно используется.
Причина обращения: