[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 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,所以第一个声明了变量afor 循环不会被执行,这并不妨碍同一 "未声明 "的变量在else 分支中被使用: )
 
Abzasc:

该条件如果

在这里,我们做一些事情

否则,如果另一个条件

做别的事

重点不是创建变量、大量的条件和计数器。

这并不要求你重新初始化该变量。按照你所写的去做,你的变量a就会在你的逻辑分支中的正确位置被使用,而无需重新初始化。宣布一次,为了你和人类的利益而使用它......。:)最主要的是不要迷失了方向和用途......。
 
ToLik_SRGV:

所以第一个声明了变量a的for循环将不会被执行

循环必须始终被执行。
 
IgorM:


那么,正确书写的要点,而不是使用语言的缩略语。

整个问题是缺乏{},不是吗?谢谢你!
 
artmedia70:
这并不要求你重新初始化该变量。按照你所写的去做,你的变量a就会在你的逻辑分支中的正确位置被使用,而无需重新初始化。宣布一次,为了你和人类的利益而使用它......。:)最主要的是不要迷失了方向和用途......。
我是这样做的,在715页,18.07.2010 14:56,没有在计数器后面加括号...
 

上面显示的 "效果 "证明了MQL-machine首先通过EX4文件查找声明的变量,并创建它们,而不管逻辑分支是否完整。一方面,它不节省内存,另一方面,你可以创建类似的结构,尽管在我看来这种风格不是最好的选择。

 
Abzasc:
整个问题是在缺乏{},不是吗?非常感谢!


整个问题是在变量的声明 中。

int a;

我声明它,然后在需要的地方和时候使用它,而你却重复声明一个变量--很可能编译器没有跳过它。

如果你在循环中只有一条语句,那么你就不需要{},但如果你有更多的语句,那么你就必须放上{},否则你会发现为什么循环的计算不正确

SZZY:如果你刚刚开始,请在for后面加上大括号,你以后会明白的。

 
ToLik_SRGV:

IgorM的代码没有出现任何错误。我不认为a会根据分支中提到的数量来分配内存,所以它是可以的。
 
Abzasc:
循环必须始终被执行。

循环与它有什么关系?这只是一个例子,在一个不知道会被使用的块中创建的变量仍然在 "播放",并且在整个start() 方法中都是可见的和可用的,不需要重新初始化它,更不需要在重复使用前去初始化它。