Est-il possible d'éviter de nombreux "ou" (||) dans les conditions entraînant la même action ? - page 8

 
paladin80:

Dans mes programmes, s'il y a beaucoup de ifs, j'utilise cette construction, avec les conditions qui donneront le plus souvent faux en premier lieu :

Et si j'ai besoin de vérifier un grand nombre de if-ops, j'utilise cette méthode :
Merci, Maxim ! Mais ça ne sert à rien, car les différentes conditions que j'ai ne sont pas comparables en logique, ni en paramètres !
 
alsu:

Non, ça ne marche pas comme ça. Premièrement, il doit y avoir quelque chose après if(), au moins un simple point-virgule (c'est-à-dire un opérateur vide) . Deuxièmement, à quel "si" votre autre opérateur est-il censé appartenir ? S'il s'agit uniquement de la dernière (comme vous l'avez écrit), alors l'action ne sera exécutée que si la condition D est vraie, à condition que A, B et C soient fausses. Il est toujours conseillé de placer des accolades pour que la logique soit claire.

Si ma mise en évidence est possible, alors c'est une bonne idée de le faire de cette façon :

if (!A && !B && !C && !D) ;//пустой оператор
else Action();

  

Comment ? Possible ? -------------------------- Je l'ai vérifié dans le code, le compilateur donne un avertissement ;

';' - point-virgule inattendu C:\Program Files\

Si ça marche, on peut aussi supporter l'avertissement !

 
borilunad:

Si celle que j'ai mise en évidence est possible, il serait bon de la rendre possible :

Comment ? Possible ? -------------------------- Vérifié dans le code, le compilateur donne un avertissement ;

';' - point-virgule inattendu C:\Program Files\

Si ça marche, on peut aussi supporter l'avertissement !

if (!A && !B && !C && !D) return(0); //закончение действия программы
else Action();
 
paladin80:

Merci beaucoup ! Comme c'est facile !

Cependant, j'ai dû placer ce bloc à la fin du début, car return(0) ne laissait rien d'autre fonctionner après lui.

 
Quelqu'un a-t-il mesuré la vitesse ? )))
 
TheXpert:
Quelqu'un a-t-il mesuré la vitesse ? )))

Je vais prendre une mesure !

Je l'ai enfin mesuré ! C'est 17,26 ! C'est 10 minutes de plus que le meilleur if() sans astuces en six mois dans le testeur. Désolé, mais on ne peut rien y faire ! Je vais continuer à creuser ! Merci à tous ! Mais il est encore trop tôt pour faire un bilan !

 
borilunad:

Si celle que j'ai mise en évidence est possible, il serait bon de la rendre possible :

Comment ? Possible ? -------------------------- Vérifié dans le code, le compilateur donne un avertissement ;

';' - point-virgule inattendu C:\Program Files\

Si ça marche, on peut aussi supporter l'avertissement !


Un avertissement est donné au cas où quelqu'un aurait simplement mis une virgule au mauvais endroit(l'opérateur vide ';' n'est pas souvent utilisé). Cette construction fonctionne et est parfaitement légale.
 
borilunad:
Je vais prendre une mesure !

Mais vous devez vérifier toutes les options. Sinon, vous pourriez vous tromper.
 
borilunad:

Si celle que j'ai mise en évidence est possible, il serait bon de la rendre telle :

Comment ? Possible ? -------------------------- Vérifié dans le code, le compilateur donne un avertissement ;

';' - point-virgule inattendu C:\Program Files\

Si ça marche, on peut aussi supporter l'avertissement !

Pour rendre les avertissements moins gênants, utilisez : {}

if (!A && !B && !C && !D) {} //пустой оператор
else Action();

 
PapaYozh:

Pour éviter que les avertissements ne vous encombrent les yeux, utilisez {} : {}

Merci ! Je vais essayer ces crochets maintenant !