Boucle For et Grand nombre

Résolu
Nicodelphi Messages postés 82 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 19 janvier 2014 - 2 sept. 2010 à 14:45
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 3 sept. 2010 à 11:21
Bonjour,

Je suis en train de me poser une question pourquoi quand je fais
for(int i 0;i Tab.Count;i++)
{
//MonCode
}


sachant que Tab.Count contient 500000 enregistrement lors de l'éxecution la boucle for n'est pas réaliser le compilateur la saute directement.

Alors que si je mets

for(int i = 0;i < Tab.Count;i++)
{
//MonCode
}


sa marche

2 réponses

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
3 sept. 2010 à 08:56
Bonjour,
Si tu analyse ton code et la boucle for: elle ne continue que si la condition est vraie. Or pour ton premier test, c'est normal que l'on sorte de suite puisque i n'est pas égal à Tab.Count.

louis
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 51
3 sept. 2010 à 11:21
Boucle for :

for([initialisation] ; [condition pour continuer la boucle] ; [incrémentation])
{

}

L'initialisation, aucun problème : int i =0
L'incrémentation, aucun problème : i++
Condition pour continuer la boucle, là, problème : i == Tab.Count
Ça signifie "On passe dans la boucle tant que i est égal à la taille de ton tableau". Donc si ton tableau, à la base, n'est pas vide, la condition sera fausse au premier passage, donc il saute direct la boucle.

Ce que tu voulais, c'était plutôt continuer la boucle tant que i est différent de la taille du tableau. Donc for(int i = 0; i != Tab.Count; i++)

Mais dans tous les cas, il vaut mieux utiliser une inégalité.
// Une boucle appelée 10 fois
for(int i = 0; i < 10; i++)
// Une boucle qui parcours ton tableau
for(int i = 0; i < monTableau.Length; i++)
// Variante : le foreach (exemple : sur une List<char>)
foreach(char monCaractere in maListe)


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
3