Maison >développement back-end >C++ >Pourquoi `size_t` n'est-il pas signé malgré les inconvénients connus ?
Pourquoi size_t est-il non signé ?
Question :
Dans son livre, Bjarne Stroustrup conseille contre l'utilisation d'entiers non signés pour gagner un bit supplémentaire pour représenter des entiers positifs. Cependant, size_t, un type couramment utilisé pour représenter les tailles de tableaux et de chaînes, n'est pas signé. Était-ce une erreur et l'utilisation de size_t devrait-elle être minimisée ?
Réponse :
size_t n'est pas signé pour des raisons historiques :
Limitations architecturales :
Sur les architectures plus anciennes avec des pointeurs 16 bits, limiter les chaînes à 32 Ko serait peu pratique. Pour résoudre ce problème, la norme C exige que ptrdiff_t, l'homologue signé de size_t, ait une plage effective de 17 bits.
Systèmes embarqués :
Dans certaines programmations embarquées environnements, ces raisons historiques sont toujours vraies.
Inconvénients des types non signés :
Cependant, dans la programmation moderne 32 bits et 64 bits, les types non signés présentent des inconvénients importants :
Conclusion :
La décision de rendre size_t non signé n'était pas une erreur compte tenu du limites architecturales de l'époque. Cependant, dans la pratique de programmation moderne, l'utilisation de types non signés pour les opérations numériques est fortement déconseillée en raison de leurs inconvénients inhérents.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!