Le résultat d'un code en c

Résolu/Fermé
LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021 - Modifié le 20 août 2021 à 16:12
LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021 - 27 juin 2021 à 16:50
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

yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 Ambassadeur 1 557
27 juin 2021 à 15:40
bonjour,
quel autre résultat attends-tu?
0
LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021
27 juin 2021 à 16:10
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
0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 1 557 > LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021
27 juin 2021 à 16:15
y++ > 12
est faux, y est incrémenté après la comparaison.
0
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++
.
0
LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021
27 juin 2021 à 16:22
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
0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 1 557 > LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021
27 juin 2021 à 16:26
if (x = !5)

est équivalent à
x = !5;
if (x)
0
LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021 > yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024
27 juin 2021 à 16:37
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?
0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 1 557 > LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021
27 juin 2021 à 16:48
c'est une assignation, comme
x = -123; 
0
LACHHABFADOUA Messages postés 23 Date d'inscription jeudi 11 juin 2020 Statut Membre Dernière intervention 7 juillet 2021 > yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024
27 juin 2021 à 16:50
Merci beaucoup.
0