Je suis nouveau sur C++ et suis actuellement le cours d'initiation (j'en suis aux tableaux) et lorsque j'essaie de récupérer la taille d'un tableau de type vector, mon IDE (Xcode) me met le message suivant :
Implicit conversion loses integer precision: 'size_type' (aka 'unsigned long') to 'const int'
Dans mon code j'ai écrit :
int const nombreNotes(notes.size());
notes étant un tableau à taille variable déclaré antérieurement.
Dans les faits, lorsque je compile tout se passe normalement, mais quand même, j'aimerais bien comprendre, il ne doit pas dire ça pour rien ;-)
Quelqu'un a une idée ?
Par avance merci,
JPhilippe
- Edité par Jean-philippeTomasini 21 février 2018 à 9:54:59
C'est parce que le type "size_type" présent dans vector est généralement défini comme std::size_t. Ce dernier étant généralement un "uint64_t". A savoir un entier non-signé. Donc là, tu convertis a priori un entier non-signé de 64 bits vers un entier signé de 32 bits, d'où la perte de précision. A noter que le compilateur peut statiquement déterminer ce type pour toi, à l'aide du mot clé auto.
auto const nombreNotes = notes.size();
Et nombreNotes se verra attribuer le bon type pendant la compilation.
EDIT :
Jean-philippeTomasini a écrit:
Je suis nouveau sur C++ et suis actuellement le cours d'initiation (j'en suis aux tableaux)
Si tu parles du "cours" d'OC : Changes de cours. Il apprend un sacré paquet d'âneries à ne pas faire, en plus de montrer des exemples de code buggés et d'être obsolète (quelques recherches sur le forum t'en diront plus). Prends plutôt le cours de C++ de @gbdivers, même s'il est encore en écriture il ne contient pas ce genre de bavures. Si tu as des problèmes de compréhension sur une partie et que ce n'est pas à cause d'un manque d'étude du cours,tu peux poster ici. Si tu préfères un cours déjà complet, tourne toi vers le C++ Primer de Lippman dans sa dernière édition (en anglais), il sera un poil moins à jour mais c'est un bon cours.
Ah ? ok, je me renseigne, donc ;-) Merci en tout cas pour l'explication !
Récupérer la taille d'un vector
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C