エラー、バグ、質問 - ページ 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 !!!

例外なくすべてのポストインクリメント 実装で完璧に正しい。

あなたが期待しているような動作を歩く場合は、preincrementを 使用してください。

 
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--)は、その変数が式で使用さ れた直後に適用される。
両行とも、postfixのインクリメント。結果(y)が違う。アプリケーションの文脈によって異なることがわかった...。
 
Ashes:
両行ともpostfixのインクリメントが あります。結果(y)が違う。アプリケーションの文脈によって異なることがわかった...。
x = x++; という式を実質的に正当化できるか?通常使用されているように、x++; の後続の代入をせずにインクリメントを使用するのはいかがでしょうか。