任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 890

 
evillive:

情况是这样的。


谢谢你,但这并不完全正确。你对一个魔术师有几个结案条件,而你却想反过来。

我想出了这个办法。

void CritCloseBuy()
   {
    if (OrderSelect(Ord, SELECT_BY_POS, MODE_TRADES)==true)
    {
      if ((OrderMagicNumber()==10011&&10033)&&(...условия1...)
      {
        ord_close=OrderClose(OrderTicket(),0.1, Bid, 0, Red);
          if (ord_close = false)
          {
            Comment("Закрытие позиции БАЙ завершилось с ошибкой #",GetLastError());
          }
            else 
              {           
              Ord=0;              
              }
           return;
           }
           if ((OrderMagicNumber()==10022&&10044&&10066)&&(...новые условия...))
      {
        ord_close=OrderClose(OrderTicket(),0.1, Bid, 0, Red);
          if (ord_close = false)
          {
            Comment("Закрытие позиции БАЙ завершилось с ошибкой #",GetLastError());
          }
            else 
              {           
              Ord=0;              
              }
           return;
           }           
          }
         }
它能起作用吗?或者有什么问题?
 
rapid_minus:


谢谢你,但这并不完全是你所需要的。你有一个魔术师的几个闭幕条件,但你需要相反的条件。

我就是这样想出来的。

它能起作用吗?或者有什么问题?

它是...我怎么能说得这么婉转呢?

如果代码是为一个魔术师准备的,那么开关 是为了什么?

但如果你愿意,你可以使用ifs,但我们必须考虑条件。

比如说

if ((OrderMagicNumber()==10011&&10033)&&(...)

难道不会在编译时受到责备吗?

 
evillive:

这是...我怎么能轻轻地说...

如果密码是给一个魔术师用的,那么开关是干什么用的呢?

也许我不理解这个开关,但在它的表达中,有一个魔术师,它与几个变体的关闭条件相比。

ZS:看过续集。我还没有编译它,因为我还没有完成代码。数字不能用AND操作来枚举?

那么我怎么才能摆脱它呢?每个魔术师都要重复一遍?

ZZZY:事实上,这不是AND,而是OR。

 
rapid_minus:

那么你如何摆脱它呢?为每个巫师重复一遍?

是的。


关于开关,你应该阅读一本入门书,相反,任何数量的变体都会被处理(case 0:..., case 1:..., case N:..., 其中数字=一个魔术师的价值)。我懒得在例子中写,所以我只够时间写两个魔术师和默认选项;)

 
evillive:
是的

我想你毕竟不需要为每个魔术师写出手术室的内容?
 
rapid_minus:

我想你不需要为每个魔术师写出一个OR,对吗?
我们应该,费迪亚,我们应该 (c)
 
evillive:

是的。


而且还是读了一本关于开关的入门书,在那里相反,任何数量的变体都会被处理(case 0:..., case 1:..., case N:..., 其中数字=一个魔术师的价值)。我懒得在例子中写,所以我只够时间写两个魔术师和默认选项;)

谢谢你对开关的澄清。我误解了它。
 

然而在切换中,你会得到不同法师的相同关闭条件的重复,就像你用ifs一样。

唯一的问题是哪种变体会吃掉更多的比特。

 
rapid_minus:

然而在切换中,你会得到不同法师的相同关闭条件的重复,就像你用ifs一样。

唯一的问题是哪种变体会吃掉更多的比特。

我是否错过了什么--我们已经在优化代码了吗?
 
rapid_minus:

然而在切换中,你会得到不同法师的相同关闭条件的重复,就像你用ifs一样。

唯一的问题是哪种变体会吃掉更多的比特。

这与if()的分支相同,只是如果有三个或更多的整数单项选择,它看起来更整洁,更容易编码。如果只有两个选项,或者正在比较的是非数字表达式,那么只有if()。而通过if(),你可以将几个选项结合起来(if( option1 && option2 || option3 ) {action;}),而switch不能直接使用,只能一次使用一个。

开关
如果()
开关 (x)
{
case 1: 按选项1行事;break;
例2:对选项2采取行动;休息。
例3:对选项3采取行动;休息。
缺省:缺省动作;中断。
}
如果( case1 ) { 在 case1中采取行动; }
否则,如果( 选项2 ) { 按选项2采取行动; }
否则,如果( 选项3 ) { 按选项3行事; }
else { 默认动作; }