Bases de la programmation en C
int x = 5;
if (x = 0)
printf("zero ");
else
printf("nonzero ");
printf("%d\n", x);Quelle est la sortie obtenue en exécutant le code ci-dessus, où = est écrit dans la condition d'une instruction if ?
- Azero 0
- Bnonzero 5
- Cnonzero 0
Afficher la réponse et l'explication
Réponse : C. nonzero 0
x = 0 dans la condition du if est une affectation, et non la comparaison ==. x reçoit 0 et la valeur de l'expression d'affectation est elle aussi 0 : la condition est jugée fausse, et c'est « nonzero », dans la branche else, qui est affiché. Le printf suivant affiche x, que l'affectation a mis à 0. Avec gcc, l'option -Wall produit un avertissement pour cette écriture : garder les avertissements activés aide à repérer l'erreur.
Continuer : 9 autres questions sur Bases de la programmation en C