Comparaison toujours fausse ????

Résolu
ffoh -  
 ffoh -
Bonjour,

j'ai un pointeur vers une suite de pairs de nombres (colonne et ligne) pour verifier qu'il n'y a pas d'erreur je verifie si on est dans le bon intervalle mais avec ce test je recois un warning:

comparaison is always false due to limite range of data type

voici le code a probleme:

if ( ( (int) ptr[i] > this->nbLigne || (int) ptr[i ] < 0 ) ||
( (int) ptr[i+1] > this->nbCol || (int) ptr[i+1] < 0 ) )
throw monException();

je ne comprend ou est mon erreur
A voir également:

5 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 845
 
Salut,
Ca ne serait pas plutôt des && que tu aurais mis dans ton code ? L'explication viendrait dans ce cas du fait que tu as mis :
if(a>ligne && a<0) au lieu de if(a<ligne && a>0).
0
ffoh
 
je crois pas

ex si a =4 et ligne=3

on peut pas avoir 4<0 && 4>ligne les 2 en meme temps c impossible non ? donc la ce sera tjs faux
0
Droopy_ Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   25
 
Bonjour,

Le problème semble venir des type de tes variables :
due to limite range of data type


Peux-tu donner tes définitions de types ?
0
ffoh
 
ce serait pas par hasard parce que je cast en int (ce que je suis obligé de faire avec un pointeur de void
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 845
 
Ah, ptr est de type void*.
Pour le caster, c'est plutôt
((int*)ptr)[i];
.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 845
 
Je sais bien, c'est justement ce que je te disais. Je pensais que tu avais fait une erreur du genre dans ton if.
Tu dis vouloir vérifier un intervalle. Mais je ne vois pas de && dans ton if.
Tu as mis if (a<0 || a>ligne || b<0 || b>ligne). Il faudrait mettre if(a>0 && a<ligne && b>0 && b<ligne).
0
Droopy_ Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   25
 
Mais c'est plus la même comparaison, ça vérifie que c'est dans l'intervalle, pas en dehors...
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 845 > Droopy_ Messages postés 248 Date d'inscription   Statut Membre Dernière intervention  
 
Bah oui ça je sais bien. Mais vu qu'il parlait d'intervalle et qu'en général on veut vérifier qu'un nombre soit positif ou inférieur à un autre. Je voulais être sûr qu'il ne s'agissait pas d'une étourderie.
0

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

Posez votre question
ffoh
 
[c++]((int*)ptr)[i];[\c++]

ne marche pas, en faite ca me donne une adresse plutot que le "int" que je cherche

mais sinon, j'avais jsute completement oublié que dans mon enoncé on pointait le pointeur pointait vers des "unsigned" et non des "int" et donc ce qui était pointé etant tjs positif d'ou la comparaision tjs juste

desolé et merci pour vos conseil
0