2012-10-06 32 views
8

Tengo dos preguntas - (I)uso de "else if" en C++

code-fragment-1 

if(<condition-statement>){ 
} 

else if(<condition-statement-2>){ 
    //statements-1 
} 
//statements-2 

código-fragmento-2

if(<condition-statement>){ 
} 

else{ 
    if(<condition-statement-2>){ 
     //statements-1 
    } 
    //statements-2 
} 

son los dos fragmentos de código anteriores misma?

(II) ¿Cuándo se usan otros ifs (en C++)?

Respuesta

9

La única diferencia está en el ejemplo 1, su Statement2 se ejecutará independientemente de las condiciones que verifique. En el ejemplo 2, Statement2 solo se ejecutará si su condición if es falsa. Aparte de eso, son básicamente lo mismo.

8

No, en el primer caso, se ejecuta el bloque else sólo si el <condition-statement>no se verifica Y sólo si<condition-statement-2>se verifica.

En el segundo caso ejecuta el bloque else simplemente si el <codition-statement> es no verificado.

En este caso son equivalentes hasta no tiene // declaraciones-2.

Acerca de la pregunta: ¿cuándo se usa el resto si (en C++)?

Se usa básicamente en las mismas condiciones que todos los demás lenguajes que tienen esta construcción. else se ejecuta como alternativa al relacionado si, else-if se ejecuta como alternativa pero con un 'adjunto' if a verificar, de lo contrario no se ejecuta. Por lo tanto, no son lógicamente equivalentes.

3

la sintaxis de un if es realmente if (condición) instrucción;

Lo que {} realmente hace es permitir agrupar varias declaraciones. En su segundo ejemplo, solo tiene una declaración (el if) dentro de {} s, entonces sí, ambos ejemplos son iguales, excepto // statements-2 siempre se ejecuta cuando! = Verdadero

1

En su primer código de muestra , la instrucción 2 se ejecuta incondicionalmente. En el segundo es condicional. No es el mísmo.

'else if' es generalmente preferible, porque puede seguir insertando o añadiendo más de ellos indefinidamente, o agregar un 'else', mientras que con la otra forma tiene que perder el tiempo con llaves para obtener el mismo efecto, y te arriesgas a alterar la semántica, como de hecho lo has hecho en tu segunda muestra.

+0

una declaración de cambio siempre es preferir a varias ramas "else if", o me está haciendo una idea incorrecta – clockw0rk