Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1353 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Warning : comparison between signed and unsigned...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Warning : comparison between signed and unsigned...

n°1655230
ngkreator
Posté le 09-12-2007 à 13:15:15  profilanswer
 

Bonjour, je voudrais savoir si je genre de warning est à prendre en compte:

Citation :

comparison between signed and unsigned integer expressions


 
si on se trouve dans ce genre de cas:

Code :
  1. for (int i=0;i<m_string.size();i++)


 
m_string.size() est de type size_t donc unsigned int
 
Comment ça se passe lors de l'évaluation de l'expression: i<m_string.size() ? i est converti en unsigned int?  
 
Dans ce cas un problème devrait apparaître si m_string.size() est plus grand que le max d'un int (2^31-1 chez moi). Mais je me vois mal me balader avec une chaine de longueur > 2^31-1 [:pingouino]
 
Je ne commets pas un crime en laissant int i au lieu de mettre unsigned int?
 

mood
Publicité
Posté le 09-12-2007 à 13:15:15  profilanswer
 

n°1655262
KangOl
Profil : pointeur
Posté le 09-12-2007 à 14:30:56  profilanswer
 

bha mets un unsigned int...

n°1655269
ngkreator
Posté le 09-12-2007 à 14:43:27  profilanswer
 

[:ddr555]  Oui mais je trouve ça moche! Mais bon je préfère quand même un truc fiable.

n°1655272
KangOl
Profil : pointeur
Posté le 09-12-2007 à 14:52:24  profilanswer
 

bha non, ca me semble logique que la taille d'une chaine de caractère est non signée.
 
mais le problème ne doit pas se poser puisque pour parcourir une chaine, il faut utiliser les itérateurs ...

n°1655276
ngkreator
Posté le 09-12-2007 à 15:01:51  profilanswer
 

KangOl a écrit :

bha non, ca me semble logique que la taille d'une chaine de caractère est non signée.
 
mais le problème ne doit pas se poser puisque pour parcourir une chaine, il faut utiliser les itérateurs ...


En fait c'est un vecteur de string (c'est de ma faute j'ai mis m_string.. dans mon ex). Mais je suppose que c'est exactement la même chose et qu'il faut utiliser un itérateur également.
 
Pourquoi il vaut mieux utiliser un itérateur plutôt que d'accéder aux éléments du vecteur comme un tableau: vecteur[i] ?
 
Je trouve ça plus lourd de créer un itérateur à 1ère vue. Mais il doit y avoir une ou des raisons.

Message cité 1 fois
Message édité par ngkreator le 09-12-2007 à 15:03:19
n°1655288
KangOl
Profil : pointeur
Posté le 09-12-2007 à 15:26:40  profilanswer
 

ngkreator a écrit :


 
Pourquoi il vaut mieux utiliser un itérateur plutôt que d'accéder aux éléments du vecteur comme un tableau: vecteur[i] ?


oui

n°1655291
ngkreator
Posté le 09-12-2007 à 15:34:40  profilanswer
 


C'est fait exprès ou t'as pas vu le "Pourquoi" au début?

n°1655437
el muchach​o
Comfortably Numb
Posté le 09-12-2007 à 20:19:11  profilanswer
 

Parce que c'est une habitude de parcourir les conteneurs avec des itérateurs. [:spamafote] Parfois même, c'est obligatoire, quand il y a des éléments supprimés dans le conteneur, comme dans une liste chaînée. On peut voir les itérateurs comme des sortes de pointeurs "intelligents".

Message cité 1 fois
Message édité par el muchacho le 09-12-2007 à 20:33:30

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1655516
ngkreator
Posté le 09-12-2007 à 22:34:52  profilanswer
 

el muchacho a écrit :

Parce que c'est une habitude de parcourir les conteneurs avec des itérateurs. [:spamafote] Parfois même, c'est obligatoire, quand il y a des éléments supprimés dans le conteneur, comme dans une liste chaînée. On peut voir les itérateurs comme des sortes de pointeurs "intelligents".

Donc personne ne sais pourquoi?  
 
Quand tu parles d'éléments supprimés dans le conteneur je vois pas quel problèmes ça peut poser. Quand on supprimer un élément à la 5ème place dans un vecteur il n'y a pas de "trou" le 6ème prend la place.

n°1655620
bjone
Insert booze to continue
Posté le 10-12-2007 à 09:23:09  profilanswer
 

les itérateurs sont une abstraction d'accès à un conteneur, ce qui permet de changer de conteneur sans changer le code qui touche la collection.
 
c'est pas obligé d'utiliser un vector<> ou un string<> via un iterateur par exemple, mais si c'est une portion de code ou les collections peuvent évoluer ça peut être un avantage d'accéder à la collection par un iterateur (moins de code à changer, etc...).
 
maintenant c'est toi qui chouaze.


Message édité par bjone le 10-12-2007 à 09:23:59
mood
Publicité
Posté le 10-12-2007 à 09:23:09  profilanswer
 

n°1655630
Taz
bisounours-codeur
Posté le 10-12-2007 à 09:38:07  profilanswer
 

un bon vieux size_t c'est mieux, voire un std::string::size_type

n°1655915
ngkreator
Posté le 10-12-2007 à 15:14:57  profilanswer
 

Merci à vous 2  :jap:

n°1986082
planetegam​e57
Posté le 20-04-2010 à 21:33:46  profilanswer
 

Merci pour l'info, ça m'a aussi été très utile ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Warning : comparison between signed and unsigned...

 

Sujets relatifs
[RÉSOLU] Warning: mysql_fetch_row(): supplied argumentRESOLU warning: assignment makes integer from pointer without a cast
Problème requête betweenWarning: session_register() [function.session-register]: Cannot send s
Warning gcc Olimit[Cg] Comment marchent les unsized arrays?
Warning: mail() [function.mail]: Spam detecteErreur PHP/FTP - Warning: ftp_fget()
[PHP] Problème de Warningwarning: [unchecked] unchecked conversion
Plus de sujets relatifs à : Warning : comparison between signed and unsigned...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR