Question sur un programme
Résolu
maniqk
-
Cloturernapasdesensfigure Messages postés 117 Statut Membre -
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.
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.
A voir également:
- Question sur un programme
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Desinstaller un programme sur windows - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Forcer la fermeture d'un programme - Guide
2 réponses
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
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
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
-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