Une des raisons est qu' unsigned int
est déjà "le plus rapide", sans la nécessité pour toutes les typedefs ou la nécessité d'inclure quelque chose. Donc, si vous en avez besoin rapidement, il suffit d'utiliser la fondamentale int
ou unsigned int
type.
Bien que cette norme ne garantit pas explicitement qu'il est plus rapide, il indirectement le fait en disant "Plaine ints ont la taille naturelle suggéré par l'architecture de l'environnement d'exécution" dans 3.9.1. En d'autres termes, int
(ou de sa non signé de contrepartie) est ce que le processeur est plus à l'aise.
Bien sûr, maintenant, vous ne savez pas quelle taille unsigned int
peut-être. Vous ne savez que c'est au moins aussi grand que short
(et je crois me souvenir qu' short
doit être d'au moins 16 bits, bien que je ne la retrouve pas que dans la norme maintenant!). Habituellement, il est tout simplement tout simplement de 4 octets, mais il pourrait en théorie être plus grand, ou dans des cas extrêmes, même la plus petite (bien que je n'ai personnellement jamais rencontré une architecture où cela a été le cas, même pas sur 8 bits des ordinateurs dans les années 1980... peut-être que certains microcontrôleurs, qui sait s'avère que je souffre de démence, int
a été très clairement de 16 bits puis).
La norme C++ ne prend pas la peine de préciser quel est le <cstdint>
types sont ou ce qu'ils ont de la garantie, il mentionne simplement "comme en C".
uint32_t
, conformément à la norme C, garantit que vous obtenez exactement 32 bits. Pas quelque chose de différent, ni moins et pas de rembourrage bits. Parfois, c'est exactement ce dont vous avez besoin, et il est donc très précieux.
uint_least32_t
garanties que quelle que soit la taille de l'est, il ne peut pas être inférieur à 32 bits (mais il pourrait très bien être plus grande). Parfois, mais beaucoup plus rarement qu'une exacte largeur ou "don't care", c'est ce que vous voulez.
Enfin, uint_fast32_t
est un peu superflue à mon avis, à l'exception de la documentation d'intention fins. Le C standard unis "désigne un type entier, qui est généralement la plus rapide" (notez le mot "généralement") et mentionne explicitement qu'il ne doit pas être le plus rapide pour tous les usages. En d'autres termes, uint_fast32_t
est à peu près le même que uint_least32_t
, ce qui est généralement plus rapide aussi, qu'aucune garantie n'est donnée (mais aucune garantie de toute façon).
Puisque la plupart du temps, vous ne se soucient pas de la taille exacte ou vous voulez exactement 32 (ou 64, parfois 16) bits, et depuis le "don't care" unsigned int
type est le plus rapide de toute façon, c'est ce qui explique pourquoi uint_fast32_t
n'est pas fréquemment utilisé.