[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 92

 
Mathemat:

Ambos son correctos, pero el segundo es más rápido. El primero siempre comprueba todas las condiciones, el segundo no comprueba todas las condiciones. Y es mejor escribirlo así, para no confundir con otra cosa:

O poner llaves alrededor de los bloques a la vez.

Gracias por los consejos. Mientras que antes me esforzaba por escribir correctamente mi EA en general, ahora me centro en su velocidad. :)
 
Mathemat:

Ambos son correctos

No, los códigos no son iguales en absoluto.
 
Podría ser más fácil ejecutarlo a través de swith() si las condiciones no necesitan ser calculadas...
 
TheXpert: No, los códigos no son mutuamente excluyentes en absoluto.

Bien, especulemos ahora sobre lo que ocurre cuando cond_1, cond_2, cond_3 no son mutuamente excluyentes...

No lo discuto, los códigos dan resultados diferentes en general. Pero si las condiciones no se solapan, los resultados parecen ser los mismos.

 
FAQ:
Puede ser más fácil pasar por swith(), si no necesitas calcular las condiciones...
En switch el valor en case debe ser int, no siempre cond_ es int. Francamente, me interesaba la lógica en sí, qué entrada es mejor/ más rápida.
 
paladin80:
En switch el valor en case debe ser int, no siempre cond_ es int. Sinceramente, me interesaba la lógica en sí, qué entrada es mejor/ más rápida.
Condiciones separadas, con las más frecuentes en la parte superior
 
paladin80:
En switch el valor en case debe ser int, no siempre cond_ es int. Sinceramente, me interesaba la lógica en sí, qué entrada es mejor/ más rápida.

El segundo, pero hay una restricción en la anidación.

Es mejor utilizar el caso, si existe tal posibilidad.

 
Sí, cambio que uso. En cuanto a las condiciones mutuamente excluyentes, mi comprensión del fenómeno es la siguiente:
//--- 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
 

Se cumplen exactamente todas las condiciones cuando y = 1. No son mutuamente excluyentes.

Son mutuamente excluyentes, por ejemplo: y<0, y==0, y>0.

 
Mathemat:

Se cumplen exactamente todas las condiciones cuando y = 1. No son mutuamente excluyentes.

Son mutuamente excluyentes, por ejemplo: y<0, y==0, y>0.

Ok, gracias a todos por su disposición a ayudarme. Una vez más voy a leer cuidadosamente acerca de la combinación if-else, para no ensuciar los puestos aquí. Sobre la exclusión mutua, supongo que es así: y<0, y==0, y>1.
Razón de la queja: