MQL5言語をゼロから独学で学ぶ - ページ 44 1...373839404142434445464748495051...84 新しいコメント MrBrooklin 2020.10.10 16:43 #431 Vladimir Simakov:グローバルオブジェクトは、デフォルトのコンストラクタで初期化さ れます。ただし、スタック上に確保されたメモリ(読み出し変数)については、初期化されない。そのため、グローバル変数は初期化されないことがありますが、この場合、ゼロになることを覚えておいてください。しかし、初期化されていない(同時に、自分が何をしているのか正確に分かっていない限り、コンパイラが生成する警告を すぐに避けることに慣れる)ことは、初期化されていない変数を読むと未定義の動作につながるため、深刻な問題である。例えば、このコードはリリースビルドとデバッグビルドで挙動が異なり、コンパイラのバージョンや最適化の設定を変更したときに、その挙動も変化しないとは誰も保証できません。 ウラジミールさん、こんにちは!分かりやすい説明ありがとうございます。 敬具 ウラジミール Реter Konow 2020.10.10 16:48 #432 MrBrooklin:Peterグローバル変数について ですが、グローバル変数が事前に定義されている必要があるという文献はまだ見当たりませんね。この件に関する知識を深めるために、ソースへのリンクをお持ちですか?MQL5リファレンスには、初期化に関する明示的な言及は ありません。 bool型は 、真偽 値を格納するために設計されて おり、 その数値表現はそれぞれ 1 または 0 である。 例 bool a =true; bool b =false; bool c =1; 内部表現は1バイトの整数値である。なお、boolean式では、boolの代わりに他の整数型や実数型、またはそれらの式を用いても、コンパイラはエラーを発生させない。この場合、0はfalse、それ以外はtrueと解釈される。 ウラジミールさん、ありがとうございます。 少なくとも慣れるまでは、明示的にグローバル変数を初期化することが望ましい。繰り返しになりますが、mql4では関数内で変数や配列を初期化することは一切できませんが、mql5ではそれが義務付けられており、さもなければ変数に「ゴミ」がついてしまいます。 MrBrooklin 2020.10.10 16:48 #433 スクリプトのコードに追加しておきました。 //--- Зададим глобальные переменные: //переменная enough_time (достаточно времени), где bool - логическое значение: истина (true) или ложь (false) bool enough_time=false; //переменная enough_patience (достаточно терпения), где bool - логическое значение: истина (true) или ложь (false) bool enough_patience=false; このスクリプトのコメントには、なぜbool データ型の 定義済み値がtrueではなく falseに なるのかが、プログラミングスクールの1年生にもわかるようにはっきりと書かれています。 ウラジミールさん、ありがとうございます。 Реter Konow 2020.10.10 16:50 #434 MrBrooklin:スクリプトコードに追加しました。ウラジミールさん、謹んで申し上げます。 他に文句を言うことはない。:) Vasiliy Sokolov 2020.10.10 16:53 #435 MrBrooklin:私はプログラミング言語MQL 5の勉強を続けており、このスレッドの参加者からあるタスクの続きであるスクリプトのコードを投稿しています。スクリプトはすべてのモードでテストされています。特に問題はありませんでした。最小限の入力パラメータ数で開始するように適用した。スクリプトのコードは英語で書かれていますが、コードへのコメントはロシア語で書かれており、学習しやすいように配慮されています。先に約束したように、このスクリプトはプログラミングスクールの1stフォームの生徒にも理解できるように記述したつもりです。ウラジミールさん、よろしくお願いします。 ウラジミール そのような書き方はしない方がいい。外部変数に対する関数の働きを短絡させないこと。これまでのところ、あなたにとっての唯一の例外は、入力変数 から値を取ることです。 MrBrooklin 2020.10.10 16:59 #436 Vasiliy Sokolov: ウラジミール そのような書き方はしない方がいい。外部変数に関数をロックしないでください。これまでのところ、あなたにとっての唯一の例外は、入力変数 から値を取ることです。 Vasilyさん、こんにちは。正直、太字になっている部分の意味がよく分かりませんでした。どういう意味なのか、詳しく教えてください。 敬具 ウラジミール Vasiliy Sokolov 2020.10.10 17:07 #437 MrBrooklin:Vasilyさん、こんにちは。正直なところ、太字で書かれていることの意味がよく分かりませんでした。どういう意味なのか、詳しく教えてください。敬具 ウラジミールグローバル 変数は使わないでください。なぜ使ってはいけないのかは、後ほど書きます。 Vladimir Simakov 2020.10.10 17:16 #438 Vasiliy Sokolov: グローバル 変数は使わないでください。なぜ使っては いけないかは、後で書きます。 これには、いい逸話がある。 - 質問:C++でグローバル変数に最適な型は何ですか? - 答え: // MrBrooklin 2020.10.10 17:18 #439 Vasiliy Sokolov: グローバル 変数は使用しないでください。なぜ使ってはいけないのかは、後で書きます。 今ならわかる。ありがとうございます。グローバル変数が使えない理由を教えてもらうのを待ちます。 ウラジミールさん、ありがとうございます。 Реter Konow 2020.10.10 17:18 #440 OOPプログラミングへの移行までの段階では、グローバル変数の使用は十分に正当化され、そこから目を背ける理由はない。番組内のどこでも使える便利なものです。なぜ使ってはいけないのでしょうか?イミフ。 1...373839404142434445464748495051...84 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
グローバルオブジェクトは、デフォルトのコンストラクタで初期化さ れます。ただし、スタック上に確保されたメモリ(読み出し変数)については、初期化されない。そのため、グローバル変数は初期化されないことがありますが、この場合、ゼロになることを覚えておいてください。しかし、初期化されていない(同時に、自分が何をしているのか正確に分かっていない限り、コンパイラが生成する警告を すぐに避けることに慣れる)ことは、初期化されていない変数を読むと未定義の動作につながるため、深刻な問題である。例えば、このコードはリリースビルドとデバッグビルドで挙動が異なり、コンパイラのバージョンや最適化の設定を変更したときに、その挙動も変化しないとは誰も保証できません。
ウラジミールさん、こんにちは!分かりやすい説明ありがとうございます。
敬具 ウラジミール
Peterグローバル変数について ですが、グローバル変数が事前に定義されている必要があるという文献はまだ見当たりませんね。この件に関する知識を深めるために、ソースへのリンクをお持ちですか?MQL5リファレンスには、初期化に関する明示的な言及は ありません。
bool型は 、真偽 値を格納するために設計されて おり、 その数値表現はそれぞれ 1 または 0 である。
例
bool a =true;
bool b =false;
bool c =1;
内部表現は1バイトの整数値である。なお、boolean式では、boolの代わりに他の整数型や実数型、またはそれらの式を用いても、コンパイラはエラーを発生させない。この場合、0はfalse、それ以外はtrueと解釈される。
スクリプトのコードに追加しておきました。
このスクリプトのコメントには、なぜbool データ型の 定義済み値がtrueではなく falseに なるのかが、プログラミングスクールの1年生にもわかるようにはっきりと書かれています。
ウラジミールさん、ありがとうございます。
スクリプトコードに追加しました。
ウラジミールさん、謹んで申し上げます。
私はプログラミング言語MQL 5の勉強を続けており、このスレッドの参加者からあるタスクの続きであるスクリプトのコードを投稿しています。スクリプトはすべてのモードでテストされています。特に問題はありませんでした。最小限の入力パラメータ数で開始するように適用した。スクリプトのコードは英語で書かれていますが、コードへのコメントはロシア語で書かれており、学習しやすいように配慮されています。先に約束したように、このスクリプトはプログラミングスクールの1stフォームの生徒にも理解できるように記述したつもりです。
ウラジミールさん、よろしくお願いします。
ウラジミール そのような書き方はしない方がいい。外部変数に関数をロックしないでください。これまでのところ、あなたにとっての唯一の例外は、入力変数 から値を取ることです。
Vasilyさん、こんにちは。正直、太字になっている部分の意味がよく分かりませんでした。どういう意味なのか、詳しく教えてください。
敬具 ウラジミール
Vasilyさん、こんにちは。正直なところ、太字で書かれていることの意味がよく分かりませんでした。どういう意味なのか、詳しく教えてください。
敬具 ウラジミール
グローバル 変数は使わないでください。なぜ使っては いけないかは、後で書きます。
これには、いい逸話がある。
- 質問:C++でグローバル変数に最適な型は何ですか?
- 答え: //
グローバル 変数は使用しないでください。なぜ使ってはいけないのかは、後で書きます。
今ならわかる。ありがとうございます。グローバル変数が使えない理由を教えてもらうのを待ちます。
ウラジミールさん、ありがとうございます。