エラー、バグ、質問 - ページ 2208

削除済み  

就職面接の有名な質問です。

iには何が入るのでしょうか?

int i = 5;
i = i++ + ++i;
MQL5 の出力 12. MSVisual Studio の 出力 13.
 
Aleksey Rodionov:

をC++で動作するようです。そのために、例えばC++を読むことにした、と聞いた。差分だけで同じ値。2番目の例ではyに5を代入してから加算しているようですが、最初の例ではまず加算してから代入しています(この仕組みを理解するのに時間がかかりました =D )。

mql5では、これらは同じ操作ですが、c++では、異なります。)

 
. ... Rick D. ... .:

就職面接の有名な質問です。

iには何が入るのでしょうか?

MQL5が出る 12. MS Visual Studioが出る 13.

副作用のため未定義。この場合、完全にトリプル効果です。最適化によって、変数値の計算が異なる場合があります。最適化のために

 
Konstantin:

mql5では、これらは同等の操作ですが、c++では、異なります。)

どこから入手したのですか?array[++i]=iとarray[i++]=iの演算 結果を比較しましたか?

ここでパズルを出題します。postfix運用とprefix運用の違いは何ですか?

 
. ... Rick D. ... .:

就職の面接で有名な質問。

インタビューされた人がUBとは何かを知っているかどうかだけを明らかにし、話題とはほとんど関係のない、間抜けで不必要な質問です。

アレクセイ・ロディオノフ
プリフィクスフォームのコードは、どうやったら便利になるんだろうと思いながら、ここに座っています。

コンパイラは必要なときにpostfix形式を最適化する十分な頭脳を持っています。

 
Slava:

どこからインプットされたのですか?array[++i]=iとarray[i++]=iの 演算 結果を比較したことがありますか?

ここで、不可解な質問があります。postfix運用とprefix運用の違いは何ですか?

array[++i]=iとarray[i++]=iが どう関係するのか、会話になかったものをどう比較すればいいのか...。

紛争の枠組みの中でmqlにいくつかの変更があり、あなたがそれについて知っている場合は、モデレータとして、構文の知識テストを行うことを試みるのではなく、対話の参加者に通知する義務があります、それは間違いなくあなたの義務ではありません...

で、さらに、postfixとprefixの操作の違いについて、mqlのヘルプにあるすべての指示を表示しますが、以前のテストでは、これらの操作はmqlで同等であることが示されています

ps. ところで、ダイアログの例を確認したところ

int i = 5;
i = i++ + ++i;

ビルド 1816 result == 12

 
TheXpert:

これは、インタビューされた人がUBとは何かを知っているかどうかだけを明らかにするもので、議論のトピックとはほとんど関係のない、間抜けで不必要な質問です。

まあ、実際には接頭辞の形の方が速いんですけどね。

また、そのような構造をコードに使用することは許されないと思います。

まず、実装によって作業が曖昧になること、さらに、そのようなコードではミスを犯しやすく、意味を理解するのが容易でないことが理由です。

コードは透明で、一目で理解できるものでなければなりません。

 
Georgiy Merts:

また、私の考えでは、このような構造をコードで使用することは、単に受け入れがたいことです。

まず、実装が異なると作業が曖昧になること、さらに、このようなコードではミスを犯しやすく、理解も容易でないことから、このようなコードになっています。

コードは透明で、一目で理解できるものでなければなりません。

mql5のヘルプを言語規約やルールの形に変える時期が来ている

削除済み  
口座タイプはRETAIL_HEDGING、ポジションの 一部決済について アドバイスをください。例えば、Expert Advisorでポジションの半分を決済すると、より少ないロットの新規注文が自動的にオープンされるはずです。では、どの時点で新しい注文が端末に入ることが保証されるのでしょうか?PositionClosePartialの直後に表示される必要はなく、OnTradeのどこかでキャッチする必要があるという理解で合っていますか?
 
Konstantin:

array[++i]=iとarray[i++]=iが どう関係するのか、会話で起きなかったことをどう比較すればいいのか...。

もし、論争の枠内でmqlに変更があり、それを知っているのであれば、モデレーターとして、構文の知識テストを行おうとするのではなく、対話の参加者にそれをもたらす義務があります、それは間違いなくあなたの義務ではありません...。

で、さらに、postfixとprefixの操作の違いについて、mqlのヘルプにあるすべての指示を表示しますが、以前のテストでは、これらの操作はmqlで同等であることが示されています

ps. ところで、ダイアログの例を確認したところ

ビルド 1816 result == 12

しかし、あなたの例は純粋に理論的なものです。学生のみを対象としています。まともなプログラマーなら、製品としてリリースすることはないだろう。

ポストフィックスとプリフィックスのインクリメントと デクリメントは、実はループの中でまず使われます。そして、それらはインクリメントとデクリメントと呼ばれています

以下はその例です。

int i=0;
while(i<ArraySize(array))
   array[i++]=i;

и

int i=0;
while(i<ArraySize(array))
   array[++i]=i;

もし、プリフィックスとポストフィックスの演算が同じように機能すると主張するならば、手に旗、首に太鼓。

プリフィックスインクリメントの場合、最後の反復処理で初期化されていないNULL配列要素や配列の範囲外エラーが発生します。


PS.このテーマについて、緑色のリンクhttps://www.mql5.com/ru/docs/basis/operations/mathoperation にある当社のドキュメントを読み直すことにしました。

重要なお知らせ

int i=5;
int k = i++ + ++i;

上記の式をあるプログラミング環境から別のプログラミング環境に移植する場合(例えば、Borland C++からMQL5へ)、計算の問題が発生することがあります。一般に、計算の順番はコンパイラの実装に依存する。実際には、ポストデクリメント(ポストインクリメント)の実装には2つの方法がある。

  1. postdecrement (postincrement) は式全体の計算が終わった後に変数に適用される。
  2. ポストデクリメント(ポストインクリメント)は、操作した場所の直後の変数に適用されます。

MQL5では現在、ポストデクリメント(ポストインクリメント)の計算方法として、1つ目の方法を実装しています。しかし、この知識を持ってしても、このトリックを使って実験するのは止めた方がいい。

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Операция инкремента и декремента применяются только к переменным, к константам не применяются. Префиксныe инкремент (++i) и декремент (--k) применяются к переменной непосредственно перед использованием этой переменной в выражении. Могут возникнуть вычислительные проблемы при переносе вышеуказанного выражения из одной среды программирования в...