Test if dans une affectation [Résolu]

Signaler
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
Salut,



je crois savoir que l'on peut mettre un test if dans la même instruction qu'une affectation de variable :



je voudrais mettre le résulatat d'un calcul dans une variable seulement
si le calcul répond à une condition, tout cela en une ligne, c'est
possible je crois ?



int pourcentage (mon_calcul()< 100);



c'est un truc dans le genre je crois, mais je connais pas la syntaxe exacte.

7 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
int pourcentage = ( condition ? valeur si vraie : valeur si fausse );

c'est ce qu'on appelle l'opérateur ternaire.

Sébastien FERRAND
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
et tu sais s'il y'a moyen de faire deux tests à la fois ? genre >= 0 et <= 100 ?
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
bah oui :

int pourcentage = ( truc >= 0 && truc <= 100 ? machin : bidule );

Sébastien FERRAND
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
ah bah oui, tout con

au passage, pas moyen de trouver de réponse pour "opérateur ternaire" sur le forum.

mais apparemment c la même chose qu'en java, et c'est expliquéici
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
oui, c'est la même chose... d'ailleur, Java est basée sur une syntaxe C... et cet opérateur nous vient du C.
pour un peu plus de doc : http://msdn.microsoft.com/library/fre/default.asp?url=/library/fre/csspec/html/vclrfcsharpspec_7_12.asp

Sébastien FERRAND
Messages postés
497
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
13 juillet 2015
6
merci pour ces précisions, j'essayrais d'y penser à l'avenir.



Je pense que l'on doit gagner quelques millièmes en temps d'exécution p/r à une structure de base : if () then else
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Si tu veux gagner du temps avec les conditions, je te donne une astuce: Dans une expression avec un && la condition de droite n'est pas evaluée si la condition de gauche est FALSE. Dans une expression avec un || la condition de droite n'est pas evaluée si la condition de gauche est TRUE. En sachant ca, tu peux gagner du temps en mettant la condition la plus susceptible d'etre vraie ou fausse ( selon ce que tu veux faire ) en premier.