Question sur un programme

Résolu
maniqk -  
Cloturernapasdesensfigure Messages postés 117 Statut Membre -
Bonjour,

Je suis en train d'apprendre le C++ et dans un questionnaire que je consultais j'ai trouvé cette question :

Qu'affiche le code suivant ?

#include <iostream.h>

int main(){
int i = 0;
if (i = 0)
cout << "OK" << endl;
else
cout <<"KO" << endl;
return 0;
}

La réponse est "KO" mais je ne saisis pas pourquoi. J'ai remarqué que dans le "if", il n'y avait qu'un seul signe "=" et donc qu'il n'y a pas de test sur la valeur i, mais j'aimerais savoir ce que comprend le compilateur dans ce cas là puisque je ne vois pas comment il affiche "KO" à la fin.

Merci d'avance.

2 réponses

  1. Utilisateur anonyme
     
    Bonjour

    Comme tu as bien remarqué, i=0 n'est pas un test. C'est une expression dont la valeur est 0. Et pour le C++, 0 signifie "faux", les autres valeurs "vrai".
    Remplace par if (i=1) pour voir la différence
    0
  2. maniqk
     
    Merci je crois avoir compris !
    0
    1. Cloturernapasdesensfigure Messages postés 117 Statut Membre 5
       
      Oui en gros quand tu fais "if (i = 0) "
      -il affecte la valeur 0 à i
      -il teste i qui vaut donc 0
      - d'où le KO

      c'est équivalent à faire
      i=0;
      if (i) ...

      Mais quand on connait bien les priorités des opérateurs, un if (int i=0) est parfois plus rapide à écrire ... mais plus difficile à comprendre pour certains
      0