[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 721

 
Abzasc:

ポイントは、変数や多くの条件、カウンターを掛けることではありません。




重要なのは、正しく書くことであり、言語の省略を使用することではありません。

int a;
for(a=0;a<8;a++){
//здесь что то делаем
}
for(a=0;a<8;a++){
//делаем что нибудь другое
}
 
Abzasc:

ポイントは、変数やたくさんの条件、カウンターを作らないことです。

まあ、そんなことはコンパイラが許してくれますから、どうぞ...。

//+------------------------------------------------------------------+
int start()
  {
  bool flag;
  
   if(flag){
      for(int a = 0; a < 10;a++){
         Print("a = ", a);
      }
   }else{
      for(a = 10; a > 0;a--){
         Print("a = ", a);
      }
   }
  }
//+------------------------------------------------------------------+
デフォルトのフラグはFalse なので、変数aが 宣言されている最初のfor ループは実行されませんが、else 分岐で同じ「宣言されていない」変数が使用されることは防げません: )。
 
Abzasc:

の場合の条件

さあ、どうする

それ以外の場合は

事足りる

ポイントは、変数やたくさんの条件、カウンターを作らないことです。

この場合、変数を再初期化する必要はありません。書いたとおりにやれば、変数aは再初期化されることなく、論理分岐の適切な場所で使用されます。一度宣言して、自分のため、人類のために使ってください...。:)どこで何に使うのか、迷わないことが最大のポイント...。
 
ToLik_SRGV:

ということで、変数aが宣言されている最初のforループは実行されません。

ループは必ず実行されなければならない。
 
IgorM:


略語を使うのではなく、正しく書くという点です。

問題は、{}がないことでしたね。ありがとうございました。
 
artmedia70:
この場合、変数を再初期化する必要はありません。書いたとおりにやれば、変数aは再初期化されることなく、論理分岐の適切な場所で使用されます。一度宣言して、自分のため、人類のために使ってください...。:)どこで何に使うのか、迷わないことが最大のポイント...。
715 pp, 18.07.2010 14:56にそうしました。カウンターの後に括弧を付けませんでした...
 

上記の「効果」は、MQL-machineがまずEX4ファイルから宣言された変数を 探し、論理分岐に関係なく完全に変数を作成していることを証明しています。一方では、RAMを保存しないことが判明し、他方では、私の意見では、このスタイルは最良の選択肢ではありませんが、あなたは、同様の構造を作成することができます。

 
Abzasc:
問題はすべて{}がないところにあったのですね。ありがとうございました。


問題はすべて変数の宣言に あったのだ。

int a;

私はそれを宣言し、必要なときに必要な場所で使用します。一方、あなたは変数の宣言を繰り返していました - ほとんどの場合、コンパイラはそれをスキップしませんでした。

ループ内のステートメントが1つだけなら、{}は必要ありませんが、それ以上ある場合は{}を付けなければなりません、さもなければ、ループが正しく計算されていない理由を探すことになります

SZZY:始めたばかりの人は、forの後に中括弧を付けてください。

 
ToLik_SRGV:

IgorMのコードでは、エラーは出ません。aはブランチの言及数によってメモリが割り当てられることはないと思うので、大丈夫だと思います。
 
Abzasc:
ループは必ず実行されなければならない。

ループは関係あるのか?これは、使用されることが知られていないブロックで作成された変数が、まだ「再生」されており、再初期化、ましてや再利用前に非初期化する必要なく、start() メソッド全体で可視かつ使用可能であることを示す一例です。