Puis-je assumer la taille de long int est toujours 4 octets?

Est-il toujours vrai que long int (qui, autant que je comprends, c'est un synonyme de long) est 4 octets?

Puis-je compter sur qui? Si non, pourrait-il être vrai pour une POSIX en fonction de l'OS?

  • Juste pour vous rappeler les gars qui sizeof tient compte de rembourrage et de l'alignement. Il est conforme à la norme d'avoir un sizeof(unsigned long) de 8 octets, mais le débordement se comporte comme 4 octets. C'est la façon de mal à essayer d'utiliser des sizeof et CHAR_BITS pour calculer la limite d'un type entier. Utilisation limits.h quand il doit être utilisé.
  • Vous devriez vraiment lire le (abrégée en premier, puis la version complète de la) C-faq, qui est apparu sur Usenet à une époque où il était le lieu où les gens avec des connaissances sur un sujet, réunis dans le même lieu (aujourd'hui, il est largement répandus au sein de plusieurs sites...), et par conséquent, il conduit à incroyablement exhaustives et bien fait Faq. Voir c-faq.com/versions.html . La lecture qu'il ouvre les yeux sur cette question et sur des dizaines d'autres, vous ne savez même pas que vous devez connaître encore (section 5 - pointeurs null - est l'une contenant de la Faq, j'ai été choqué (et de reconnaissance) à découvrir)
  • non, c'est 8 sur mon pc
  • Double Possible de Plage de valeurs dans C Int et Long 32 - 64 bits
  • Cela pourrait être vrai, mais, non, vous ne pouvez pas compter sur elle. Cela fait 8 octets sur la plupart des systèmes qui j'ai travaillé pendant près de 20 ans.
  • Il est à 8 sur la plupart des systèmes 64 bits (par exemple, x86-64 Linux et OS X). Windows est la principale exception, car une grande partie du code écrit pour Windows 32 bits a été écrit pour Windows 32 bits, avec peu ou pas d'effort pour écrire du code portable qui ne font pas d'hypothèse. Aussi pour ABI raisons: je pense que certaines structures ont longs dans leurs définitions, mais ils n'ont pas besoin d'être 64 bits. Donc MS a décidé de faire long 32 bits à garder les structures de la même taille dans leur ABIs et pour les bases de code.
  • Ce que fait le C++ standard de l'état de la taille d'un int, long type?

InformationsquelleAutor Elimination | 2016-03-07