Une p'tite colle !

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 - 16 déc. 2005 à 13:42
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 17 déc. 2005 à 11:59
Dans le code suivant, pourquoi ai-je une boucle infinie ?

byte[] bytes = new bytes[256];
for (byte i=0; i<=255; i++) {
bytes[i] = (byte)(255 - i);
}

Sébastien FERRAND
[MVP C#]

11 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
16 déc. 2005 à 13:56
Je dirais que i devient > 255, donc retour a 0.
Donc il faut soit entourer la boucle par un checked{}, ou enlever remplacer le "<=" par "<"

J'ai bon ?

Mx
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 déc. 2005 à 13:59
pas mal... je n'avais pas pensé au checked ;)

mais le < n'est pas bon, car bytes[255] reste vide :D

Sébastien FERRAND
[MVP C#]
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 déc. 2005 à 14:02
juste comme ca, ce code fonctionne correctement en .net 1.1

Sébastien FERRAND
[MVP C#]
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
16 déc. 2005 à 14:04
Ah zut, j'avais pas pensé au bytes[255].
d'un autre coté, bytes[255] est la 256eme valeur du tableau, alors il faut pas utiliser un byte dans la boucle, mais un int.
En fait, il faut se sortir du contexte "bytes", et renommer le tableau "tab" pour y voir un peu plus clair

Enfin, c'est troublant quand meme ;)
Tu devrais la proposer au jeu msdn ou il faut trouver les bugs

Mx
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
16 déc. 2005 à 14:09
type.MaxValue+1 = type.MinValue ^^

"juste comme ca, ce code fonctionne correctement en .net 1.1"
J'ai tester en 1.1 j'ai aussi une boucle infinie.

/*
coq
MVP Visual C#
*/
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 déc. 2005 à 14:09
héhé... pourtant la solution est de ne pas utiliser de for pour ca.

byte[] bytes = new byte[255];
byte i =0;
do {
bytes[i] = (bytes)(255 - i);
} while ( i++ != 255);

Sébastien FERRAND
[MVP C#]
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
16 déc. 2005 à 14:20
Une autre solution, est d'initialiser toutes les valeurs du tableau a la main.
Fallait y penser !

non ?

Mx
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 déc. 2005 à 14:26
mouarf... je n'y avais pas pensé non plus :D

Sébastien FERRAND
[MVP C#]
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
16 déc. 2005 à 14:48
Mx se dévoue pour te faire aussi ceux du Int32 et Int64 :p

/*
coq
MVP Visual C#
*/
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
16 déc. 2005 à 14:53
J'ai pas appris a compter aussi loin

Mx
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
17 déc. 2005 à 11:59
J'arrive trop tard pour jouer avec vous :(
0
Rejoignez-nous