Le résultat d'un code en c

[Résolu]
Signaler
Messages postés
23
Date d'inscription
jeudi 11 juin 2020
Statut
Membre
Dernière intervention
7 juillet 2021
-
Messages postés
23
Date d'inscription
jeudi 11 juin 2020
Statut
Membre
Dernière intervention
7 juillet 2021
-
Bonjour,
svp, lorsque j'exécute le code suivant
#include<stdio.h>
int main(){
int x =4, y =3*x--;
if( x = !5|| y++>12)printf("x=%d, y=%d\n",x,y);
else printf("y= %d, x=%d\n",y,x);
return 0;
}
je trouve comme solution y=13, x=0 , ms je n'arrive pas a comprendre.
pouvez vous m'expliquer le code
merci d'avance

Configuration: Windows / Chrome 91.0.4472.114

2 réponses

Messages postés
16471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 août 2021
883
bonjour,
quel autre résultat attends-tu?
Messages postés
23
Date d'inscription
jeudi 11 juin 2020
Statut
Membre
Dernière intervention
7 juillet 2021

je n'arrive pas a comprendre pourquoi, car si j'ai bien compris le code, dans if statement , deuxième condition y++>12 est vérifie puisque y=12, donc il doit afficher printf du if statement et non pas else
Messages postés
16471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 août 2021
883 >
Messages postés
23
Date d'inscription
jeudi 11 juin 2020
Statut
Membre
Dernière intervention
7 juillet 2021

y++ > 12
est faux, y est incrémenté après la comparaison.
Bonjour,

Au départ
x = 4 et y = 12
, ensuite x passe à 3 (x--)

Dans la condition x vaut 0 car faire
x = !5
renverra un booléen (0 ou 1) ici 0, ce sera toujours 0 si x vaut autre chose que 0, essaie avec
x = !0
au lieu de
x = !5
et y vaut 12 lors de la comparaison et passera ensuite à 13, c'est une post-crémentation essaie avec
++y
au lieu de
y++
.
Messages postés
23
Date d'inscription
jeudi 11 juin 2020
Statut
Membre
Dernière intervention
7 juillet 2021

Merci, la partie concernée y je l'ai bien compris, Mais pour la condition
x = !5 
est- ce-que cette dernier une une comparaison? est-il similaire à
x != 5
Messages postés
16471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 août 2021
883 >
Messages postés
23
Date d'inscription
jeudi 11 juin 2020
Statut
Membre
Dernière intervention
7 juillet 2021

if (x = !5)

est équivalent à
x = !5;
if (x)
Messages postés
23
Date d'inscription
jeudi 11 juin 2020
Statut
Membre
Dernière intervention
7 juillet 2021
>
Messages postés
16471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 août 2021

x = !5
j'ai pas compris l'utilité de cette statement.par exemple
x != 5
c'est une comparaison mais
x = !5
c'est quoi?
Messages postés
16471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 août 2021
883 >
Messages postés
23
Date d'inscription
jeudi 11 juin 2020
Statut
Membre
Dernière intervention
7 juillet 2021

c'est une assignation, comme
x = -123; 
Messages postés
23
Date d'inscription
jeudi 11 juin 2020
Statut
Membre
Dernière intervention
7 juillet 2021
>
Messages postés
16471
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
4 août 2021

Merci beaucoup.