Problem dans la boucle while
Résolu
aminet1
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
j'arrive pas a comprendre le résultat de ce code pour moi le résultat doit etre BCD et non BD et merci pour votre temps
#include <stdio.h>
int main(void) {
char *s;
s="ABCD";
while(*s++)
printf("%c",*s++);
return 0;
}
j'arrive pas a comprendre le résultat de ce code pour moi le résultat doit etre BCD et non BD et merci pour votre temps
#include <stdio.h>
int main(void) {
char *s;
s="ABCD";
while(*s++)
printf("%c",*s++);
return 0;
}
A voir également:
- Problem dans la boucle while
- Vlc lecture en boucle ✓ - Forum Lecteurs et supports vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Comment lire en boucle une music sur VLC - Forum Lecteurs et supports vidéo
- Boucle while python ✓ - Forum Python
- Livebox 6 redemarre en boucle ✓ - Forum Réseaux sociaux
1 réponse
Bonjour
Si, le résultat est bien BD
-s pointant initialement sur A, tu testes while(*s++). s pointe maintenant sur B
- tu imprimes ce B avec printf("%c",*s++) donc tu incrémentes s : s pointe maintenant sur C
- tu testes à nouveau ta condition de bouclage while(*s++) donc tu incrémentes encore s : s pointe maintenant sur D
- tu imprimes ce D...
À chaque boucle, tu incrémentes s deux fois. C'est d'ailleurs très dangereux, tu ne testes qu'un caractère sur deux pour arrêter ta boucle et si tu avais initialisé ta chaîne avec un nombre impaire de caractères, tu passais par-dessus le caractère null de fin de chaîne et tu partais dans le décor...
Si, le résultat est bien BD
-s pointant initialement sur A, tu testes while(*s++). s pointe maintenant sur B
- tu imprimes ce B avec printf("%c",*s++) donc tu incrémentes s : s pointe maintenant sur C
- tu testes à nouveau ta condition de bouclage while(*s++) donc tu incrémentes encore s : s pointe maintenant sur D
- tu imprimes ce D...
À chaque boucle, tu incrémentes s deux fois. C'est d'ailleurs très dangereux, tu ne testes qu'un caractère sur deux pour arrêter ta boucle et si tu avais initialisé ta chaîne avec un nombre impaire de caractères, tu passais par-dessus le caractère null de fin de chaîne et tu partais dans le décor...