Quand est u_int8_t ≠ unsigned char?

En fonction de C et de C++, CHAR_BIT >= 8.

Mais à chaque fois que CHAR_BIT > 8, uint8_t ne peut même pas être représenté que 8 bits.

Il doit être plus grande, car CHAR_BIT est le nombre minimum de bits pour n'importe quel type de données sur le système.

Sur ce genre de système peut uint8_t être défini légalement être d'un type autre que unsigned char?

(Si la réponse est différente pour le C et le C++ alors je voudrais savoir à la fois.)

  • Je me demande si c'est légal d'avoir un char avec seulement 7 bits et 1 peu de rembourrage.
  • Nan, je pense que tous les chars doivent tout à leur représentation bits de participer à la détermination de leur valeur.
  • Ou peut-être une 16-bits uint8_t où 8 est réel et 8 est de rembourrage. Je voudrais tirer sur celui qui a fait un tel environnement. 🙂
  • La norme C++ qu'il énumère, à titre d'option. typedef signed integer type int8_t; // optional
  • Pas sûr que ce soit autorisé, car la largeur est censé être exactement 8 bits. 😛
  • est requise par la norme ont pas de rembourrage bits et à deux-compléter que si elle est signée.
  • Ne serait-il pas perdre de gamme si ce qui s'est passé? Sens, vous avez besoin tous les 8 bits pour représenter certains char.
  • De tels environnements n'existe pas (il est commun pour les architectures DSP à être incapables de faire face à quelque chose de plus petit qu'un mot); dans ce cas, uint8_t ne devrait pas exister du tout.
  • Double Possible de u_int8_t vs unsigned char

InformationsquelleAutor Mehrdad | 2013-04-22