Le résultat d'un code en c

Résolu
LACHHABFADOUA Messages postés 24 Statut Membre -  
LACHHABFADOUA Messages postés 24 Statut Membre -
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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    quel autre résultat attends-tu?
    0
    1. LACHHABFADOUA Messages postés 24 Statut Membre
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > LACHHABFADOUA Messages postés 24 Statut Membre
         
        y++ > 12
        est faux, y est incrémenté après la comparaison.
        0
  2. gyrau
     
    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
    1. LACHHABFADOUA Messages postés 24 Statut Membre
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > LACHHABFADOUA Messages postés 24 Statut Membre
         
        if (x = !5)

        est équivalent à
        x = !5;
        if (x)
        0
      2. LACHHABFADOUA Messages postés 24 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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
      3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > LACHHABFADOUA Messages postés 24 Statut Membre
         
        c'est une assignation, comme
        x = -123; 
        0
      4. LACHHABFADOUA Messages postés 24 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Merci beaucoup.
        0