¿Hay alguna diferencia entre el uso de varias declaraciones if y las declaraciones else if?

Esta pregunta se refiere específicamente a los scripts de shell, pero podría ser sobre cualquier lenguaje de programación.

¿Hay alguna diferencia entre usar múltiples if declaraciones y uso elif declaraciones en scripts de shell? Y un case declaración no funcionaría en mi situación.

preguntado el 08 de enero de 11 a las 21:01

Esto depende del diseño y las interacciones, naturalmente. -

Pregunta muy útil. Gracias -

4 Respuestas

Sí, potencialmente. Considere esto (C #, Java, lo que sea):

int x = GetValueFromSomewhere();

if (x == 0)
{
    // Something
    x = 1;
}
else if (x == 1)
{
    // Something else...
}

vs esto:

int x = GetValueFromSomewhere();

if (x == 0)
{
    // Something
    x = 1;
}
if (x == 1)
{
    // Something else...
}

En el primer caso, solo Digital XNUMXk de "Algo" o "Algo más ..." ocurrirá. En el segundo caso, los efectos secundarios del primer bloque hacen que la condición del segundo bloque sea verdadera.

Luego, para otro ejemplo, las condiciones pueden no ser mutuamente excluyentes para empezar:

int x = ...;

if (x < 10)
{
    ...
} 
else if (x < 100)
{
    ...
}
else if (x < 1000)
{
    ...
}

Si elimina el "más" aquí, tan pronto como una condición coincida, el resto también lo hará.

Respondido el 09 de enero de 11 a las 00:01

Respuesta muy útil. Gracias - Yi Xiang Chong

Tiene que ver con la eficiencia y tus necesidades. If las declaraciones se ejecutan independientemente unas de otras; cada uno correrá. Else if sentencias solo se ejecutan si la anterior ifs fallan.

Respondido el 21 de diciembre de 19 a las 09:12

if (x == 0) {
    // 1
}


if (x >= 0) {
    // 2
}

if (x <= 0) {
    // 3
}

El código anterior producirá un valor diferente al código siguiente para x=0.

if (x == 0) {
    // 1
} else if (x >= 0) {
    // 2
} else {
   // 3
}

En el primer caso todas las declaraciones 1, 2, 3 será ejecutado para x = 0. En el segundo caso solo declaraciones 1 estarán.

Respondido el 09 de enero de 11 a las 00:01

Cuando tiene varias sentencias if, cada una se evalúa por separado y, si las condiciones son correctas, se puede ejecutar el código en todas ellas. Si tiene una declaración if / elif, la segunda condición se evaluará solo después del resultado particular de la evaluación de la primera condición.

Considere este pseudocódigo:

If (cond A) { action 1}
If (cond B) { action 2}

Si tanto la condición A como la condición B son verdaderas, ambas acciones se ejecutarán.

Por otro lado, este pseudocódigo:

If (cond A) {action 1}
Elif (cond B) {action 2}

Solo se ejecutará una de las dos acciones (o ninguna), sin importar cómo se evalúen ambas condiciones.

Respondido el 21 de diciembre de 19 a las 09:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.