Le résultat d'un code en c

Résolu
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. Contributeur
    bonjour,
    quel autre résultat attends-tu?
    1. 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
    2. Contributeur
      @LACHHABFADOUA
      y++ > 12
      est faux, y est incrémenté après la comparaison.
  2. 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++
    .
    1. 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
    2. @yg_be
      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?