[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 92

 

Les deux sont corrects, mais le second est plus rapide. Le premier vérifie toujours toutes les conditions, le second ne vérifie pas toutes les conditions. Et il vaut mieux l'écrire comme ça, pour ne pas confondre avec l'affiliation des autres :

//--- 2.
if (cond_0)
{  if (cond_1)           a=result_1;
   else if (cond_2)      a=result_2;
        else if (cond_3)  a=result_3;
}

Ou bien mettez des accolades autour de tous les blocs en même temps.

 
Mathemat:

Les deux sont corrects, mais le second est plus rapide. Le premier vérifie toujours toutes les conditions, le second ne vérifie pas toutes les conditions. Et il est préférable de l'écrire comme ça, pour ne pas confondre avec une autre appartenance :

Ou bien mettez des accolades autour des blocs immédiatement.

Merci pour le conseil. Alors que j'avais l'habitude de m'efforcer d'écrire correctement mon EA en général, je me concentre désormais sur sa vitesse. :)
 
Mathemat:

Les deux sont corrects

Non, les codes ne sont pas du tout égaux.
 
Il pourrait être plus facile de l'exécuter par swith() si les conditions n'ont pas besoin d'être calculées...
 
TheXpert: Non, les codes ne sont pas du tout mutuellement exclusifs.

Bien, spéculons maintenant sur ce qui se passe lorsque cond_1, cond_2, cond_3 ne sont pas mutuellement exclusives...

Je ne discute pas, les codes donnent des résultats différents en général. Mais si les conditions ne se chevauchent pas, les résultats semblent être les mêmes.

 
FAQ:
Il peut être plus facile de passer par swith(), si vous n'avez pas besoin de calculer les conditions...
Dans switch, la valeur dans case doit être int, mais cond_ n'est pas toujours int. Franchement, je m'intéressais à la logique elle-même, à savoir quelle entrée est la meilleure/la plus rapide.
 
paladin80:
Dans un switch, la valeur de la case doit être int, mais cond_ n'est pas toujours int. J'étais honnêtement intéressé par la logique elle-même, quelle entrée est meilleure/plus rapide.
Séparer les conditions, en plaçant les plus fréquentes en haut.
 
paladin80:
Dans un switch, la valeur dans le cas doit être int, mais pas toujours cond_ est int. J'étais honnêtement intéressé par la logique elle-même, quelle entrée est meilleure/plus rapide.

Le deuxième, mais il y a une restriction sur la nidification.

Il est préférable d'utiliser le cas, si une telle possibilité existe.

 
Oui, j'utilise un interrupteur. Quant aux conditions mutuellement exclusives, ma compréhension du phénomène est la suivante :
//--- 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
 

Vous avez exactement toutes les conditions réunies lorsque y = 1. Ils ne s'excluent pas mutuellement.

Mutuellement exclusives sont par exemple : y<0, y==0, y>0.

Raison: