Différence entre u_int8_t, uint_fast8_t et uint_least8_t

Le standard C99 introduit le suivant les types de données. La documentation peut être trouvée ici pour la AVR stdint bibliothèque.

  • uint8_t signifie que c'est un 8 bits type non signé.
  • uint_fast8_t signifie qu'il est le plus rapide unsigned int avec au moins 8
    bits.
  • uint_least8_t signifie que c'est un unsigned int avec au moins 8 bits.

Je comprends uint8_t et qu'est-ce que uint_fast8_t( je ne sais pas comment il est mis en œuvre dans le registre de niveau).

1.Pouvez-vous expliquer quel est le sens de "c'est un unsigned int avec au moins 8 bits"?

2.Comment uint_fast8_t et uint_least8_t aider à accroître l'efficacité/code de l'espace par rapport à la uint8_t?

  • Pour votre 1ère question, je peux imaginer que, alors que uint8_t est garantie 8 bits, uint_fast8_t est garantie >= 8 bits, à l'instar d'une unsigned char.
  • Une considération est que uint8_t n'existe pas sur les systèmes qui n'ont pas un natif de 8 bits type. Les deux autres seront là.
  • Vous avez obtenu des réponses qui font référence à "obscur" et "exotique" architectures. Ces termes sont un peu biaisées. Bien sûr, si votre expérience avec les systèmes de bureau, ces architectures sont hors de votre gamme de l'expérience. Mais "je n'ai pas vu ça avant" n'est pas la même chose que "c'est obscur ou exotique". Pour les personnes qui travaillent avec les systèmes embarqués ou les Dsp ces choses sont tout à fait commun.
  • Double Possible de La différence de int8_t, int_least8_t et int_fast8_t?
InformationsquelleAutor mic | 2016-01-28