[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 92

 
Mathemat:

两者都是正确的,但第二种方法更快。第一个总是检查所有条件,第二个不检查所有条件。而且最好是这样写,以免与属于其他的混淆。

或者一次把大括号放在块的周围。

谢谢你的建议。虽然我曾经努力在一般情况下正确地编写我的EA,但我现在专注于它的速度。:)
 
Mathemat:

两者都是正确的

不,这些代码根本就不平等。
 
如果条件不需要计算,通过swith()运行可能更容易......
 
TheXpert: 不,这些代码根本不是相互排斥的。

对了,我们现在来推测一下,当cond_1、cond_2、cond_3不相互排斥时,会发生什么?

我不是在争论,这些代码在一般情况下给出了不同的结果。但如果条件不重叠,结果似乎是一样的。

 
FAQ:
如果你不需要计算条件,跳过swith()可能更容易。
在switch中,case中的值应该是int,不一定cond_是int。坦率地说,我对逻辑本身感兴趣,哪个条目更好/更快。
 
paladin80:
在switch中,case处的值应该是int,不一定是cond_是int。老实说,我对逻辑本身很感兴趣,哪个条目更好/更快。
分开的条件,最经常使用的条件在顶部
 
paladin80:
在switch中,case处的值必须是int,不一定cond_是int。老实说,我对逻辑本身很感兴趣,哪个条目更好/更快。

第二种,但对嵌套有限制。

如果有这种可能性,最好使用案例。

 
是的,开关我用。至于相互排斥的条件,我对这一现象的理解是这样的。
//--- 1.
int x=1, y=1;
if (x==1)
{  if (y>0)  a=result_1;
   if (y<2)  a=result_2;
   if (y==1) a=result_3;
}
// a=result_3

//--- 2.
int x=1, y=1;
if (x==1)
{  if (y>0)            a=result_1;
   else if (y<2)       a=result_2;
        else if (y==1) a=result_3;
}
// a=result_1
 

当y=1时,你正好满足了所有条件。 它们并不相互排斥。

相互排斥的例子有:y<0,y==0,y>0。

 
Mathemat:

当y=1时,你正好满足了所有条件。 它们并不相互排斥。

相互排斥的例子有:y<0,y==0,y>0。

好的,感谢大家愿意帮助我。我将再次仔细阅读关于组合的if-else,不在这里乱发帖子。关于互斥,我想是这样的:Y<0,Y==0,Y>1