错误、漏洞、问题 - 页 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;

增量和减量操作只适用于变量,不适用于常量。前缀增量(++i)和减量(-k)是在表达式中使用变量之前应用于该变量。

后缀 增量(i++)和减量(k--)是在表达式中使用变量后 立即应用于 变量。

 
Rosh:

算术运算

...
后缀 增量(i++)和减量(k--)是在表达式中使用变量后 立即应用于 变量。
在这两行中,后缀增量。结果(y)是不同的。事实证明,这取决于应用的背景...
 
Ashes:
这两行都有后缀的增量。结果(y)是不同的。事实证明,这取决于应用的背景...
你能实际地证明表达式x = x++; 你想说什么?为什么不使用没有后续赋值的增量x++;,因为它通常被使用。