Demande d'explication
Résolu
jeancrien1121
Messages postés
18
Statut
Membre
-
karirovax Messages postés 3584 Statut Membre -
karirovax Messages postés 3584 Statut Membre -
Bonjour à tous, j'ai examen en principe et méthode de programmation lundi et j'ai encore pas mal de lacune et c'est pour cela que je viens solliciter votre aide.
Petite exemple je ne comprend pas pourquoi dans ce programme :
int a = 0, x = 11;
while (x--)
printf("A = %d\n",a++);
printf("X =%d\n",x++);
a la fin de de cette boucle X vaudra -1 et A vaudra 10
A mon sens ce serai une boucle infini étant donner qu'il diminue x mais le rajoute en gros ça valeur serait 10 - 11 - 10 - 11 ensuite pourquoi x s'arrête a -1 à 0 j'aurai compris mais a -1 je me dis qui devrait continuer et la encore boucle infini :s
Alors voila, je vous remercie d'avance pour le temps que vous me consacrerez :)
Petite exemple je ne comprend pas pourquoi dans ce programme :
int a = 0, x = 11;
while (x--)
printf("A = %d\n",a++);
printf("X =%d\n",x++);
a la fin de de cette boucle X vaudra -1 et A vaudra 10
A mon sens ce serai une boucle infini étant donner qu'il diminue x mais le rajoute en gros ça valeur serait 10 - 11 - 10 - 11 ensuite pourquoi x s'arrête a -1 à 0 j'aurai compris mais a -1 je me dis qui devrait continuer et la encore boucle infini :s
Alors voila, je vous remercie d'avance pour le temps que vous me consacrerez :)
A voir également:
- Demande d'explication
- Foyer netflix explication - Accueil - Guide streaming
- Paris multiple 2/6 explication - Forum Loisirs / Divertissements
- Chambre 1408 explication fin ✓ - Forum Cinéma / Télé
- Explication pour une curieuse ✓ - Forum Mozilla Firefox
- Another earth explication fin - Forum Cinéma / Télé
2 réponses
Attention, il n'y a pas d'accolades apres le while. Seule la 1ere instruction suivante fait donc partie du while.
De plus afficher x++ revient à afficher x et à faire x=x+1.
Avec ces deux éléments tu devrais comprendre.
De plus afficher x++ revient à afficher x et à faire x=x+1.
Avec ces deux éléments tu devrais comprendre.
Je compléte un peu quand même. Il y a la pré incrémantation (respectivement décrémentzation) ++x et la post-incrémanentation (respectivement décrementation) x++.
La différence, c'est que dans le premier cas tu effectues l'opération sur la variable avant l'instruction, dans le deuxième cas après l'instruction.
Il ne faut pas abusé de ces opérateurs, car ils peuvent donner un source assze illisible.
La différence, c'est que dans le premier cas tu effectues l'opération sur la variable avant l'instruction, dans le deuxième cas après l'instruction.
Il ne faut pas abusé de ces opérateurs, car ils peuvent donner un source assze illisible.
Lis attentivement la réponse de Char Snipeur.
Voilà une illustration.
Compare le résultat de :
#include <stdio.h> int main(void) { int a = 0, x = 11; while (x--) printf("A = %d et X = %d\n", a++, x); printf("after the while loop X = %d\n", x); printf("printing x++ = %d\n", x++); printf("in fact now X = %d\n", x); return 0; }et de
#include <stdio.h> int main(void) { int a = 0, x = 11; while (--x) printf("A = %d et X = %d\n", a++, x); printf("after the while loop X = %d\n", x); printf("printing x++ = %d\n", x++); printf("in fact now X = %d\n", x); return 0; }et tu comprendras ce qu'il explique et pourquoi il y a une décrémentation après évaluation (pareil pour ce qui se passe avec le printf sur x++).
Dans les deux cas, while s'arrête quand x est évalué à 0. Cependant, selon que tu écrives --x ou x--, la décrémentation de x se produira respectivement avant ou après l'évaluation de x.
Dans la vraie vie, ce type de style d'écriture de code est à fuir et à proscrire, tellement il est cryptique.
Dal
Enfin je croit :p
Dans le premier cas il va décrémenter après avoir vérifier si la condition est vrai et meme si elle est fausse il décrémentera mais n'effectuera pas l'action et dans le deuxième cas il décrémentera avant de vérifier la condition.
en tous cas merci a vous tous :)
ajoutez entre les parenthèse une double condition comme while ( x<11 & x=0 ) par exemple et la boucle va arrêter si x vaut 0 ou ajoutez une condition IF instruction et voilà
je suis pas professionnel mais le code est mal structuré .