错误、漏洞、问题 - 页 2120

 
fxsaber:

看起来不像是狭义的重点。看起来它还没有进入公共领域。

它很可能是对自己的宣传、论坛和其他东西进行分析的内部产物。
 
Комбинатор:
它很可能是对自己的宣传、论坛和其他东西进行分析的内部产物。

该描述在某种程度上与仅有的内部使用情况对应性差。

 

?

void OnStart()
{
        int a = 0, b = 0; //Результат:
        Print(( ++a) + ( ++a)); //3
        Print((b+=1) + (b+=1)); //4
}

结果:3 4

有什么区别呢?

 
A100:

?

结果:3 4

有什么区别呢?

当然,这是有区别的。在第一种情况下,首先是++a,然后是+,然后是++a。

第二种是b+=1,然后b+=1,然后b+b。

 
您能给新手一些建议吗? 过去,在MQL4中,当在EA中写一个条件时,我们习惯于简单地写Close[0]表示收盘价,例如,蜡烛收在移动平均线之上,订单被打开。在MQL5(Forts)中,它不起作用,不同的指标可以通过手柄进行比较,但简单的蜡烛图分析将不起作用。也许,这些烛台(高点、低点、开盘、收盘)必须在某处声明? 对于MT4,我只是在条件中写了Close[0],系统就理解为这是当前柱子的收盘价。
 
VadimR:
您能给新手一些建议吗? 过去,在MQL4中,当在EA中写一个条件时,我们习惯于简单地写Close[0]表示收盘价,例如,蜡烛收在移动平均线之上,订单被打开。在MQL5(Forts)中,它不起作用,不同的指标可以通过手柄进行比较,但简单的蜡烛图分析将不起作用。也许烛台数据(高点、低点、开盘、收盘)必须在某处声明? 但对于MT4,我只是在条件中写了Close[0],系统就意识到这是当前柱子的收盘价。

使用函数CopyXXXX

 
fxsaber:

当然,这是有区别的。

第二种是b+=1,然后b+=1,然后b+b。

如果你遵循这个逻辑,那么

void OnStart()
{
        int c = 0;    //Результат:
        Print( c     + (c+=1)); //1
}

首先c+=1,然后c+c,结果是1+1=2。而结果=1

 
A100:

如果你遵循这个逻辑,那么

首先c+=1,然后c+c,结果是1+1=2。而结果=1

它只在脚本中不正确地工作,而在EA中工作正常。

我是指前面的例子。

 
A100:

如果你遵循这个逻辑,那么

首先c+=1,然后c+c,结果是1+1=2。而结果=1

你没有理解其中的逻辑。

Print((c+=0) + (c+=1)); //2
Print((c+=1) + c); //2
 
fxsaber:

你错过了重点。

如果我不明白这个逻辑,那么为什么在C99/C++中两种情况下的结果https://www.mql5.com/ru/forum/1111/page2140#comment_6484866 是一样的?

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.02.05
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы