L'observation de Bjarne Stroustrup selon laquelle "utiliser unsigned au lieu d'un int pour gagner un bit de plus pour représenter des entiers positifs n'est presque jamais une bonne idée" a soulevé des inquiétudes quant à la décision de rendre size_t non signé.
À l'origine, size_t a été rendu non signé pour s'adapter aux architectures avec des pointeurs 16 bits, telles que les systèmes DOS. Pour éviter les limitations de taille de chaîne, la norme C exigeait que ptrdiff_t, la contrepartie signée de size_t, soit effectivement de 17 bits.
Bien que ces raisons historiques puissent toujours être applicables dans les systèmes embarqués, ils le sont moins pour la programmation moderne 32 bits et 64 bits. Dans ces environnements, il n'y a aucun avantage pratique à utiliser des types non signés pour les nombres, et leur utilisation peut introduire des bogues potentiels dus aux règles de conversion implicites C/C (par exemple, où string("Hi").length()
La décision de rendre size_t non signé n'était pas une erreur, mais plutôt un choix pratique pour les systèmes limités de l'époque. Cependant, dans les pratiques de programmation modernes, il est généralement conseillé de minimiser l'utilisation d'entiers non signés dans les interfaces et pour les nombres, sauf dans des circonstances spécifiques où la nature autodescriptive de typedef int MyType est bénéfique.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3