mql5言語の特徴、微妙なニュアンスとテクニック - ページ 216 1...209210211212213214215216217218219220221222223...247 新しいコメント fxsaber 2021.11.18 19:03 #2151 Igor Makanu #:ZS: こんなマクロもありましたね。 理解できない。 Igor Makanu 2021.11.18 19:13 #2152 fxsaber #:理解できない。 このようなマクロの便利さについては、"macro while 0 "でググると、ネット上にたくさん情報があります。 https://russianblogs.com/article/9410298326/ mktr8591 2021.11.18 19:21 #2153 昔、このスレッドでwhile(0)の例があったのですが https://www.mql5.com/ru/forum/170952/page141#comment_12897922 Особенности языка mql5, тонкости и приёмы работы 2019.07.30www.mql5.com В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач... fxsaber 2021.11.18 20:01 #2154 mktr8591 #: はっきり言って、静的なものだけです(これはC++の話です)。ローカル変数の場合、ユーザーC-torがあれば、ヌル化は行われない。 OOPと何ら矛盾しない説明自体に好感が持てました。 単純な構造体オブジェクトを作成すると、次のようなことが起こります。 構造体のためにメモリが確保される - どんなゴミでもそこにある。 このピースでコンストラクタが起動します。 宣言が{}を通過すると、項目1-2の間に別の宣言が挿入され、割り当てられたメモリがゼロで埋め尽くされます。 このロジックでは、OOPは何ら苦にならない。有効な仕組みである。 A100 2021.11.18 20:46 #2155 fxsaber #: が宣言されると、1-2点の間にもう1つ挿入 され、割り当てられたメモリがゼロで埋め尽くされます。 このロジックでは、OOPは何ら苦にならない。有効な機構です。 どうせコンストラクタがあるのに、なぜゼロにする必要があるのでしょうか? fxsaber 2021.11.18 20:54 #2156 A100 #:ロジックそのものに問題があります。どうせコンストラクタがあるのになぜゼロにするのか? コンストラクタを持つ構造体はユニオンで使用できないからです。 A100 2021.11.18 21:19 #2157 Ilyas #:unionの場合は、最初のメンバーだけを初期化 し、フィールドを入れ替えればテストが実行されます。 多くのユーザーが期待するものになるように行動を変える価値があるかどうか考えてみよう。 。 x[i].i == 0 の第1項をチェックするようにした(以前は x[i].x == 0.0 だった)。 union X { int i; double x; }; void OnStart() { X x[10000] = {}; //(*) bool b = true; for ( int i = 0; i < ArraySize(x) && (b = (x[i].i == 0)); i++ ); Print( b ); } 結果:false そしてZeroMemory - trueで fxsaber 2021.11.18 21:34 #2158 Igor Makanu #:このようなマクロの便利さについては、"macro while 0 "でググると、ネット上にたくさん情報があります。https://russianblogs.com/article/9410298326/ このような混乱は、マクロの最後にセミコロンを付けるだけのことです。私はマクロの中でどこでも中括弧を使っていますが、問題はありません。 mktr8591 2021.11.19 12:27 #2159 A100 #:x[i].i == 0 の第1項をチェックするようにした(以前は x[i].x == 0.0 という条件だった)。結果:falseそしてZeroMemoryで-本当です。 はい、mqlのバグ (C++ではtrueを返す)。 fxsaber 2021.11.24 01:46 #2160 今(b3110)、複雑でない構造をゼロにするにはどうしたらいいのでしょうか? struct MqlTick2 : private MqlTick { // string Str; // С этой строкой не обнулить. }; template <typename T> void ZeroMemoryStruct( T &Struct ) { uchar Bytes[sizeof(T)]; ::CharArrayToStruct(Struct, Bytes); } void OnStart() { MqlTick2 Tick; ZeroMemoryStruct(Tick); } 1...209210211212213214215216217218219220221222223...247 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ZS: こんなマクロもありましたね。
理解できない。
理解できない。
このようなマクロの便利さについては、"macro while 0 "でググると、ネット上にたくさん情報があります。
https://russianblogs.com/article/9410298326/
昔、このスレッドでwhile(0)の例があったのですが
https://www.mql5.com/ru/forum/170952/page141#comment_12897922
はっきり言って、静的なものだけです(これはC++の話です)。ローカル変数の場合、ユーザーC-torがあれば、ヌル化は行われない。
OOPと何ら矛盾しない説明自体に好感が持てました。
単純な構造体オブジェクトを作成すると、次のようなことが起こります。
宣言が{}を通過すると、項目1-2の間に別の宣言が挿入され、割り当てられたメモリがゼロで埋め尽くされます。
このロジックでは、OOPは何ら苦にならない。有効な仕組みである。
が宣言されると、1-2点の間にもう1つ挿入 され、割り当てられたメモリがゼロで埋め尽くされます。
このロジックでは、OOPは何ら苦にならない。有効な機構です。
どうせコンストラクタがあるのに、なぜゼロにする必要があるのでしょうか?
ロジックそのものに問題があります。どうせコンストラクタがあるのになぜゼロにするのか?
コンストラクタを持つ構造体はユニオンで使用できないからです。
unionの場合は、最初のメンバーだけを初期化 し、フィールドを入れ替えればテストが実行されます。
多くのユーザーが期待するものになるように行動を変える価値があるかどうか考えてみよう。
。
x[i].i == 0 の第1項をチェックするようにした(以前は x[i].x == 0.0 だった)。
結果:false
そしてZeroMemory - trueで
このようなマクロの便利さについては、"macro while 0 "でググると、ネット上にたくさん情報があります。
https://russianblogs.com/article/9410298326/
このような混乱は、マクロの最後にセミコロンを付けるだけのことです。私はマクロの中でどこでも中括弧を使っていますが、問題はありません。
x[i].i == 0 の第1項をチェックするようにした(以前は x[i].x == 0.0 という条件だった)。
結果:false
そしてZeroMemoryで-本当です。
はい、mqlのバグ
(C++ではtrueを返す)。