错误、漏洞、问题 - 页 161

 
alexvd:

在这之前的行动是什么?

更新有帮助吗?

在几天不使用后打开了终端。得到了这张照片。然后用脚本来上传历史记录。没有变化。等了几个小时。现在一切都很好。

 
你能告诉我在哪里可以找到谁在真实账户上运行MT5吗?
 
void OnStart()
  {
//---
   int x,y = 0;
   Print("x++:");
   x = x++;
   Print("x=",x," y=",y);
   y = x++;
   Print("x=",x," y=",y);
  }

你能解释一下为什么根据运行的结果x==0,y==1?建 342

PS。应该阅读...x==1,y==0 ......。

 
Ashes:

你能解释一下为什么根据运行的结果x==0,y==1?建 342

在此查看https://www.mql5.com/ru/docs/basis/operations/mathoperation

编译器不会显示任何错误或警告?

Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
Документация по MQL5: Основы языка / Операции и выражения / Арифметические операции
  • www.mql5.com
Основы языка / Операции и выражения / Арифметические операции - Документация по MQL5
 
Ashes:

你能解释一下为什么根据运行的结果x==0,y==1?建 342

我们检查了,结果是x=1,y=0

第一个增量x=x++ 分解为

t=x;  // x=0
x++;  // x=1
x=t;  // x=0

 
Ashes:

你能解释一下为什么根据运行的结果x==0,y==1?建 342

是的,我们可以。这都是关于x=x++的实现。

在后增量之前,x值被保存到一个临时变量中。然后进行增量。然后从临时变量中进行赋值。

 
Lizar:

看这里https://www.mql5.com/ru/docs/basis/operations/mathoperation

编译器没有显示任何错误或警告?

MT5编译器默默地吞下了它!它不能在MT4中编译。

出于好奇,我在C++中尝试了类似的结构(来自Visual Studio 2005),x和y的结果是一样的。

 
Ashes:

你能解释一下为什么根据运行的结果x==0,y==1?建 342

在对变量进行矩阵操作之前,你需要对其进行初始化。如果你只是把它赋给一个未初始化的变量,一切都会好起来。

然而,为避免麻烦,初始化变量总是一个好主意。

void OnStart()
  {
//---
   int x=0,y = 0;
   Print("x++:");
   x++;
   Print("x=",x," y=",y);
   y=x;
   Print("x=",x," y=",y);
  }
 
Ashes:

MT5编译器默默地吞下了!在MT4中,编译失败。

出于好奇,我在C++中尝试了类似的结构(来自Visual Studio 2005)--x和y的结果是一样的。

这个地方在c++标准中没有定义,明确指出它取决于实现。有2种主要的实现方式。

1.在表达式中使用一个变量后,立即执行后加法。(正如我们所做的那样)。

2.在整个表达式计算完毕后进行后置增量。

 

我的意思是,我在哪里可以找到哪些经纪商在实时运行MT5?