Salut à tous.
Dans une condition, on peut obtenir le même résultat avec (1 < 11) et (1 <= 10).
Il doit y avoir une raison de choix je supposes, savez vous lequel et pourquoi ?
Salut à tous.
Dans une condition, on peut obtenir le même résultat avec (1 < 11) et (1 <= 10).
Il doit y avoir une raison de choix je supposes, savez vous lequel et pourquoi ?
Ça dépend du style du programmeur, j'aurais tendance à préfèrer (i < 11) mais je suppose que ça dépend. En tout cas l'idée est de pas mixer les deux dans un programme pour le garder le plus clair et cohérent possible![]()
Les expressions « 1 < 11 » et « 1 <= 10 » n'ont aucun intérêt puisque l'on connaît le résultat à l'avance et qu'il est immuable. En revanche, lorsque que tu utilises une variable comme indice dans une boucle, ça donne « i < 11 » ou « i <= 10 », ce qui a déjà beaucoup plus de sens. La différence, dans ce cas, apparaît quand i n'est plus un entier mais un flottant. Le premier cas est valide jusqu'à 10,99999... tandis que le deuxième s'arrête à 10 exactement. Au programmeur de savoir exactement ce qu'il veut et quand sa condition doit être effectivement valide.
Ensuite, c'est vrai qu'on a en général tendance à faire disparaître le « = » pour ne garder qu'un seul opérateur. Sur le plan technique, ça ne change rien puisque même au niveau électronique, l'égalité et l'infériorité sont évaluées exactement au même moment par la même instruction. En revanche, il est assez fréquent de faire démarrer un indice de boucle à 0. Dix tours correspondent alors aux chiffres de 0 à 9, et la valeur « 10 » correspond justement à la fin du processus. Si bien que la plupart du temps, on se retrouve avec « < » seul.
Généralement, on voit ce genre de condition dans une boucle, où l'on dépend d'une taille. Quand on a un tableau indexé de zéro à taille-1, on écrira la boucle sous la forme for(i=0 ; i<taille ; i++) plutôt que mettre un <= qui gène plus qu'autre chose.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Bonjour
Surtout que si on écrit <=, on écrira alors for(i=0 ; i <= (taille - 1) ; i++) ce qui, en dehors d'une soustraction supplémentaire effectuée à chaque itération, accentue encore une complexification inutilement inutile.
Ceci dit, le cas peut se produire qu'on désire afficher non seulement le contenu du tableau mais aussi une référence "humaine" aux éléments (style "élément n° 1"). Dans ce cas, en partant du tableau suivant char *tab[5]={"toto", "titi", "tata", "tutu", "plop"}, il y a deux facons de voir
1) on utilise des indices "humains" et on décale l'indice pour le tableau
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for (i=1; i <= 5; i++) printf("Elément %d/%d: [%s]", i, 5, tab[i-1]);
2) on utilise des indices "machine" et on décale l'indice pour l'affichage humain
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for (i=0; i < 5; i++) printf("Elément %d/%d: [%s]", i+1, 5, tab[i]);
Perso je préfère cette seconde solution, considérant que ce qui prime c'est la façon dont le C travaille (en commençant à 0) et en considérant que le coté "humain" de l'affichage n'est finalament que secondaire. On a en effet généralement plus souvent besoin de travailler une ou plusieurs fois sur tab[i] que de l'afficher (en plus généralement qu'une fois) et donc mettre du tab[i-1] à chaque fois qu'on s'en sert rejoint la remarque initiale.
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Partager