44 votes

Y a-t-il une différence entre l'utilisation de plusieurs instructions if et else if ?

Cette question concerne spécifiquement les scripts, mais pourrait porter sur n'importe quel langage de programmation.

Y a-t-il une différence entre l'utilisation de plusieurs if et en utilisant elif dans les scripts ? Et, un case ne fonctionnerait pas dans ma situation.

1 votes

Cela dépend de la disposition et des interactions, naturellement.

0 votes

Cette question devrait vraiment être agnostique de la langue .

84voto

Jon Skeet Points 692016

Oui, potentiellement. Considérez ceci (C#, Java, peu importe) :

int x = GetValueFromSomewhere();

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

contre ça :

int x = GetValueFromSomewhere();

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

Dans le premier cas, seuls un de "Quelque chose" ou "Quelque chose d'autre..." se produira. Dans le second cas, les effets secondaires du premier bloc rendent la condition du second bloc vraie.

Dans un autre exemple, les conditions peuvent ne pas être mutuellement exclusives au départ :

int x = ...;

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

Si vous vous débarrassez du "else" ici, dès qu'une condition est remplie, les autres le sont aussi.

22voto

P.Brian.Mackey Points 12892

C'est une question d'efficacité et de besoins. If sont exécutées indépendamment les unes des autres ; chacune d'entre elles sera exécutée. Else if ne s'exécutent que si les instructions précédentes if s échouent.

11voto

fastcodejava Points 22174
if (x == 0) {
    // 1
}

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

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

Le code ci-dessus produira une valeur différente de celle du code ci-dessous pour x=0 .

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

Dans le premier cas, toutes les déclarations 1 , 2 y 3 sera exécuté pour x = 0 . Dans le second cas, seules les déclarations 1 le sera.

4voto

Franci Penov Points 45358

Lorsque vous avez plusieurs instructions if, chacune est évaluée séparément et, si les conditions sont bonnes, le code de toutes les instructions peut être exécuté. Si vous avez une instruction if / elif, la deuxième condition ne sera évaluée qu'après le résultat particulier de l'évaluation de la première condition.

Considérez ce pseudo-code :

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

Si les cond A et cond B sont toutes deux vraies, les deux actions seront exécutées.

D'autre part, ce pseudo-code :

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

Une seule des deux actions (ou aucune) sera exécutée, quelle que soit l'évaluation des deux conditions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X