web-dev-qa-db-fra.com

utilisation de "else if" en c ++

J'ai deux questions - (I)

code-fragment-1

if(<condition-statement>){
}

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

code-fragment-2

if(<condition-statement>){
}

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

Les deux fragments de code ci-dessus sont-ils identiques?

(II) quand est-ce que ifs (en C++) est utilisé?

11
SegFault

La seule différence est dans l'exemple 1 que votre Statement2 sera exécuté quelles que soient les conditions que vous vérifiez. Dans l'exemple 2, Statement2 ne sera exécuté que si votre condition if est fausse. À part cela, ils sont fondamentalement les mêmes.

13
Adam Plocher

Non, dans le premier cas, vous n'exécutez le bloc else que si le <condition-statement>n'est pas vérifié ET seulement si<condition-statement-2>est vérifié.

Dans le second cas, vous exécutez le bloc else simplement si le <codition-statement> est non vérifié.

Dans ce cas sont équivalents jusqu'à vous n'avez pas // d'instructions-2.

A propos de la question: quand est-ce que le if si (en c ++) est utilisé?

Est utilisé essentiellement dans les mêmes conditions que toutes les autres langues qui ont cette construction. else est exécuté comme alternative au if associé, else-if est exécuté comme alternative mais avec un _ attaché if à vérifier, sinon il n'est pas exécuté. Ils ne sont donc pas logiquement équivalents.

8
obe6

la syntaxe d'une instruction if est vraiment if (condition);

Ce que le {} fait vraiment, c'est de vous permettre de regrouper plusieurs instructions. Dans votre deuxième exemple, vous n'avez qu'une seule instruction (le if) à l'intérieur de vos {}, donc oui, les deux exemples sont les mêmes, sauf que // instructions-2 est toujours exécutée lorsque! = True

3
Avery3R

Dans votre premier exemple de code, l'instruction-2 est exécutée sans condition. Dans le second, il est conditionnel. Pas le même.

'else if' est généralement préférable, car vous pouvez continuer à en insérer ou à en ajouter indéfiniment, ou à ajouter un 'else', tandis qu'avec l'autre forme, vous devez sans cesse jouer avec des accolades pour obtenir le même effet, et vous risque d'altérer la sémantique, comme vous l'avez fait dans votre deuxième échantillon.

1
user207421