Vous n'êtes pas identifié.
Pages: 1
En fait voilà ce que je voudrais savoir :
est-ce que ça :
if((c1!=0 && c2!=0 && c3!=0)&&(c1==c2==c3))...
est remplaçable par ça :
if((c1==c2==c3)!=0)...
Hors ligne
bin dans la logique, déjà, tu aurait:
(c1==c2==c3), donc c1, c2 et c3 doivent ètre éguaux.
maintenant, ta 2eme expression, si les 3 sont éguaux, l' expression
(c1==c2==c3) va te renvoyé 1, qui est différent de 0, mais si les 3 sont éguaux à 0, ça reste vrai!
de manière général:
if ([expression != 0)
est équivalent à:
if ([expression])
donc ta 2eme expression ne remplace pas la 1ere, il manque 1 condition, celle de tester voir si 1 variable est nulle, moi je mettrai ceci:
if (( c1 == c2 == c3) && c1 ) [...];
Hors ligne
(c1==c2==c3) va te renvoyé 1, qui est différent de 0, mais si les 3 sont éguaux à 0, ça reste vrai!
Il faut lire ((c1==c2)==c3) donc si les 3 sont null ça fera (1==0) donc 0 donc ce sera faux...
Si j'ai bien compris ce que tu veux faire c'est tester si toute les variables sont égales et non nul donc ce qu'il te faut c'est :
(c1 && (c1==c2) && (c2==c3))
Note: certaines parenthèses ne sont pas utiles ici, mais comme tu viens de t'en rendre compte ça évite de se planter alors il vaut mieux les mettre, ça ne coûte rien...
Une petite note pour l'optimisation : lorsqu'il y a une suite de tests avec && comme ici, il vaut mieux mettre le plus simple (rapide) a réaliser en premier, comme ça s'il échoue les suivants ne sont même pas testés.
Hors ligne
non non krach ca c une aberration totale lol
(c1==c2) renvoie une valeur booleenne 1 ou 0 , si tu rajoutes ==c3 derriere tu vas comparer le résultat de la premiere comparaison (true ou false en fait) avec la valeur de c3, ce qui ne donne pas du tout le meme résultat!
Idem pour ((c1==c2)!=0), ca ca revient à écrire exactement (c1==c2) , puisque tu testes si l'égalité c1==c2 n'est pas égale à 0, donc si on a bien c1 égale c2...
Donc en fait aucune de tes 2 expressions n'est correcte, tu es obligé d'écrire
if((c1!=0 && c2!=0 && c3!=0 && c1==c2 && c1==c3))...
cette remarque tient aussi pour
if(a<i<b) ...
par exemple, qui est aussi incorrect, puisque ca revient à vérifier si le résultat de la premiere comparaison (1 ou 0) est plus petit que b...
on est bien obligé de mettre
if(a<i && i<b) ...
:!:
Hors ligne
Oui c vrai 2072 a trouvé une expression plus simple, je n'avais pas pensé à ca, au moins ca c correct lol
Hors ligne
je savais pas pour le langage c que fallait lire comme ça, lol
(toute façon, je teste jamais plus de 2 variables sans mettre des parenthese)
Hors ligne
c'est exactement la meme logique que le basic et sa c'est plutot cool !
Hors ligne
OK merci en tout cas.
Heureusement que je vous ai posé la question car j'aurais certainement continué mes conneries
Hors ligne
Pages: 1