新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1737 1...173017311732173317341735173617371738173917401741174217431744...1953 新评论 Ivan Butko 2021.11.10 09:24 #17361 Artyom Trishkin #:当然,程序并不是在一个单独的线程中等待终端记录一些数据。 谢谢你,我是说 Ivan Butko 2021.11.10 11:10 #17362 请告诉我,在运算符for(i;i>0;i--)的中断后,表达式 "i--"或只是 "表达式3"(根据文档)被执行?我在课本上找不到。 我不明白为什么在断裂后Print(i)会不时抛出"-1";在断裂前有i--和if(i==0),这是退出命令,如果i在运算符内已经达到0。 由于i在代码中更远的地方使用,在Close[i],它产生错误 "超出范围 Tretyakov Rostyslav 2021.11.10 11:20 #17363 Ivan Butko 运算符for(i;i>0;i--)的中断后,表达式 "i--"或只是 "表达式3"(根据文档)被执行?我在课本上找不到。我不明白为什么在断裂后Print(i)会不时抛出"-1";在断裂前有i--和if(i==0),这是退出命令,如果i在运算符内已经达到0。 由于i在代码中更远的地方使用,在Close[i],它产生错误 "超出范围 我不明白这一点。给我看看代码 Valeriy Yastremskiy 2021.11.10 11:23 #17364 Ivan Butko 运算符for(i;i>0;i--)的中断后,表达式 "i--"或只是 "表达式3"(根据文档)被执行?我在课本上找不到。我不明白为什么在断裂后Print(i)会不时抛出"-1";在断裂前有i--和if(i==0),这是退出命令,如果i在运算符内已经达到0。 由于i在代码中更远的地方使用,在Close[i],它产生错误 "超出范围 在断点之后,退出循环到循环后的下一个操作者,在循环迭代到该点结束后,开始一个新的迭代。 Ivan Butko 2021.11.10 11:34 #17365 Valeriy Yastremskiy for (i; i>0; i--){i--;if (i==0) break;}Print(i);Print(Close[i]); // 在日志中说(-1),怎么会......因此,错误数组超出范围,因为Close[-1]没有发生。,我的意思是,我的理解是否正确,在头的中断(i; i>0; i--) 之后,第三个表达式 "i--"仍然被执行? Документация по MQL5: Основы языка / Операторы / Оператор цикла for www.mql5.com Оператор цикла for - Операторы - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 Konstantin Nikitin 2021.11.10 11:37 #17366 Ivan Butko for (i; i>0; i--){i--;if (i==0) break;}Print(i);Print(Close[i]); // 日志说(-1),怎么会这样......。因此,错误数组超出了范围,因为Close[-1]没有发生。 我的意思是,我的理解是,在标题中的中断(i; i>0; i--) 之后,第三个表达式 "i--"无论如何都会被执行,这一点对吗?正确地写道i=10; for (i; i>0; i--) { i--; if (i==0) break; } Print(i); Print(Close[i]); 你不仅在标题中拿走了,而且在循环的主体中也拿走了。 Ivan Butko 2021.11.10 11:41 #17367 Konstantin Nikitin #:它写得很正确。 不要问我在我的代码中写了什么样的废话。我只是想了解这个运算符的细微差别)似乎我在正文中指定了 "是时候离开这里了,因为i=0",但是运算符接受并再次执行了表达式,尽管它应该把控制权传递给下一个运算符。 Konstantin Nikitin 2021.11.10 11:43 #17368 Ivan Butko #:不要问我在写什么胡话。我只是想了解这个运算符的细微差别)就像我在正文中指定了 "是时候离开这里了,因为i=0",但是运算符接受并再次执行了表达式,尽管它应该把控制权交给下一个运算符。 是的,你做到了,但你在这次检查前把它拿走了。这样写吧 i=10; for (i; i>0; i--) { if (i==0) break; i--; } Print(i); Print(Close[i]); 会有不同的结果 Ivan Butko 2021.11.10 11:45 #17369 Konstantin Nikitin #:是的,你做到了,但你在这次检查前把它拿走了。像这样写 aah...得到了它。明白了。 谢谢大家的及时回复。 Nikolay Ivanov 2021.11.10 11:59 #17370 Ivan Butko #:ahh...明白了。明白了。 谢谢大家的及时回复。 你的代码打印的是0,而不是-1... void OnStart() { int i=10; for (i; i>0; i--) { i--; if (i==0) break; } Print(i); } //+------------------------------------------------------------------+ 可能是-1从其他地方打印出来的,很可能整个代码都在打印机里...... 在你试图解决问题之前,你需要确定它...在解决这个问题之前,要确保它的存在,并对它进行定位... 1...173017311732173317341735173617371738173917401741174217431744...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
当然,程序并不是在一个单独的线程中等待终端记录一些数据。
谢谢你,我是说
我不明白为什么在断裂后Print(i)会不时抛出"-1";在断裂前有i--和if(i==0),这是退出命令,如果i在运算符内已经达到0。 由于i在代码中更远的地方使用,在Close[i],它产生错误 "超出范围
在断点之后,退出循环到循环后的下一个操作者,在循环迭代到该点结束后,开始一个新的迭代。
{
i--;
if (i==0) break;
}
Print(i);
Print(Close[i]);
// 在日志中说(-1),怎么会......因此,错误数组超出范围,因为Close[-1]没有发生。
,我的意思是,我的理解是否正确,在头的中断(i; i>0; i--) 之后,第三个表达式 "i--"仍然被执行?
{
i--;
if (i==0) break;
}
Print(i);
Print(Close[i]);
// 日志说(-1),怎么会这样......。因此,错误数组超出了范围,因为Close[-1]没有发生。
我的意思是,我的理解是,在标题中的中断(i; i>0; i--) 之后,第三个表达式 "i--"无论如何都会被执行,这一点对吗?
正确地写道
你不仅在标题中拿走了,而且在循环的主体中也拿走了。它写得很正确。
不要问我在我的代码中写了什么样的废话。我只是想了解这个运算符的细微差别)似乎我在正文中指定了 "是时候离开这里了,因为i=0",但是运算符接受并再次执行了表达式,尽管它应该把控制权传递给下一个运算符。
不要问我在写什么胡话。我只是想了解这个运算符的细微差别)就像我在正文中指定了 "是时候离开这里了,因为i=0",但是运算符接受并再次执行了表达式,尽管它应该把控制权交给下一个运算符。
是的,你做到了,但你在这次检查前把它拿走了。这样写吧
会有不同的结果
是的,你做到了,但你在这次检查前把它拿走了。像这样写
aah...得到了它。明白了。
谢谢大家的及时回复。
ahh...明白了。明白了。
谢谢大家的及时回复。
你的代码打印的是0,而不是-1...
可能是-1从其他地方打印出来的,很可能整个代码都在打印机里......
在你试图解决问题之前,你需要确定它...在解决这个问题之前,要确保它的存在,并对它进行定位...