Pourquoi Comparer si un Unsigned Int >= 0 un “Inutile”de Comparaison?

J'ai eu avertissement:

Pe186 "Inutile de comparaison de unsigned int zéro"

quand j'ai essayé de compiler le code suivant:

for(clLoop = cpLoopStart; clLoop >= 0; clLoop--)                                  
{
    //Do something
}

Je ne comprends pas pourquoi. J'ai pu comprendre, si j'étais à la recherche d'une valeur moins de zéro, depuis un unsigned int ne peut jamais être négatif. Mais tout ce que je cherche ici est de savoir si il est l'égalité des à zéro, ce qui un unsigned int peut certainement être.

Je pouvais même voir cette erreur si dans cette boucle, j'ai essayé de pré-décrémentation au lieu de post-décrémentation, mais là encore ce n'est pas le cas.

  • Il ne fait aucun sens de penser qu'un tel message d'erreur dépend de la pré-ou post (totalement hors de propos ici) l'incrémentation ou la décrémentation -- clLoop va prendre toutes les valeurs possibles de toute façon. Aussi, si clLoop < 0 est inutile de test (comme il est), alors clLoop >= 0 doit aussi être un inutile d'essai, puisque (clLoop < 0) == !(clLoop >= 0).
  • double possible de Pourquoi ne "for (i = 100; i <= 0; --i)" de la boucle pour toujours?
InformationsquelleAutor Josh | 2011-02-21