错误、漏洞、问题 - 页 1495

 
Karputov Vladimir:
不要再代表想象中的(或虚构的)用户提问了。如果订户有问题,就让他自己问吧。否则我将认为是在为信号做广告。
恐怕你误解了我的意思。 我的信号已经很长时间不需要广告了。我试图了解我所使用的服务的技术方面。尽管如此,我是第一个被接触的人。
 
Artem Prischepa:
恐怕你误解了我的意思。 我的信号已经很长时间不需要广告了。我试图自己理解我所使用的服务的技术方面。尽管如此,我是第一个被接触的人。
在这种情况下,研究信号服务的常见问题(第一篇)中的问题。
 

这是一个错误,还是我对语言的理解不到位。

void Func( int & Tmp )
{
  return;
}

void OnStart( void )
{
  int Tmp1, Tmp2;
  
  Func((0 > 1) ? Tmp1 : Tmp2); // '?' - parameter passed as reference, variable expected 
    
  return;
}
 
zaskok3:

这是一个错误,或者说是我对语言的理解不到位。

三元 表达式的结果是变量Tmp1或变量Tmp2的内容。

而且,Func函数不应该像你那样传递表达式的结果,而是传递一个引用

 

我如何处理这个问题?

在建立RENCO图的图表上安装专家顾问后,终端永久挂起。

重启终端并没有帮助。我从文件夹中删除了 "专家"--没有帮助!我把它删除了。

该怎么做?

win7/64 mt4/950

 
Slawa:

三元运算 表达式的结果是变量Tmp1或变量Tmp2的内容

是内容而不是变量本身的问题吗?我想这就是我理解力差的地方。谢谢你!

我试过三元替代方案,但没有成功。

//  Func((0 > 1) ? Tmp1 : Tmp2); // '?' - parameter passed as reference, variable expected
  
  // Так не пашет
  (0 > 1) ? Func(Tmp1) : Func(Tmp2); // 'Func' - expression of 'void' type is illegal
  
  // Так, конечно, работает
  if (0 > 1)
    Func(Tmp1);
  else
    Func(Tmp2);

这里的三元是没有分配的。

 
zaskok3:

确切地说,是内容,而不是变量本身?显然,这就是我理解力差的表现。谢谢你!

尝试了三元替代方案,没有成功。

虽然这里的三元没有分配,但是。

三元运算的结果是第一个表达式的结果或第二个表达式的结果,这取决于条件表达式的结果。

结果必须被分配到某个地方(或成为另一个表达式的成员),因为它是rvalue

这与简单地书写

int a=1;
int b=2;

a + b;
 

Slawa:

结果必须被分配到某个地方(或成为另一个表达式的成员),因为它是一个r值

这和直接写的差不多

如果我用int Func代替void Func,那么结果确实是一样的。这是个无奈的事。仅仅是因为强调的那句话吗?
 
zaskok3:
如果我用int Func代替void Func,那么结果确实是一样的。虚空是一个无奈之举。仅仅是因为强调的那句话吗?
 
Slawa:
明白了。谢谢你的教育!