86 votes

Comment Déclarer un Entier de 32 bits en C

Quelle est la meilleure façon de déclarer un type entier, qui est toujours 4 octets sur toutes les plates-formes? Je ne vous inquiétez pas au sujet de certains de l'appareil ou de vieilles machines qui dispose de 16 bits int.

123voto

Corey D Points 2676
#include <stdint.h>

int32_t my_32bit_int;

15voto

nos Points 102226

C ne pas se préoccuper beaucoup avec la taille exacte des types d'entiers, C99 introduit l'en-tête stdint.h , ce qui est probablement votre meilleur pari, indiquez-le et vous pouvez utiliser, par exemple, int32_t bien sûr, pas toutes les plates-formes pourrait soutenir que.

12voto

Brooks Moses Points 6205

Corey réponse est bonne pour les "meilleurs", à mon avis, mais un simple "int" également fonctionner dans la pratique (étant donné que vous êtes ignorant les systèmes avec 16 bits de type int). À ce stade, autant de code dépend int 32 bits ce système, les vendeurs ne vont pas changer.

(Voir aussi pourquoi, longtemps est de 32 bits sur beaucoup de systèmes 64 bits et pourquoi nous avons "long long".)

L'un des avantages de l'utilisation de int32_t, cependant, c'est que vous n'êtes pas à la perpétuation de ce problème!

5voto

cfrantz Points 41

Vous pourriez chasser vers le bas une copie de Brian Gladman de l' brg_types.h si vous n'avez pas stdint.h.

brg_types.h découvrirez les tailles des différents entiers sur votre plate-forme et de créer des typedefs pour le commun des tailles: 8, 16, 32 et 64 bits.

5voto

cutlasj Points 1

Vous devez inclure inttypes.h au lieu de stdint.h car stdint.h n'est pas disponible sur certaines plateformes comme Solaris, et inttypes.h comprendra stdint.h pour vous sur les systèmes Linux. Si vous incluez inttypes.h puis votre code est plus portable entre Linux et Solaris.

Ce lien explique ce que je dis: HP lien sur inttypes.h

Et ce lien a un tableau indiquant pourquoi vous ne voulez pas utiliser long ou int si vous avez l'intention d'un certain nombre de bits présents dans votre type de données. IBM lien sur portable types de données

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X