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
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Pc qui s'allume et s'éteint en boucle - Forum Virus
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
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...