la taille de la variable int
Comment la taille des int est décidé?
Est-il vrai que la taille des int dépendra du processeur. Pour une machine 32 bits, il sera de 32 bits et 16 bits c'est 16.
Sur ma machine elle montre que 32 bits, bien que la machine a de processeurs 64 bits et 64 bits Ubuntu installé.
cela dépend aussi du compilateur, parce que le C ne parle pas de la taille exacte de l'int.
double possible de stackoverflow.com/questions/589575/size-of-int-long-etc
double possible de stackoverflow.com/questions/589575/size-of-int-long-etc
OriginalL'auteur Rohit | 2012-10-05
Vous devez vous connecter pour publier un commentaire.
Il dépend de la mise en œuvre. La seule chose que le C standard garanties
et
et aussi quelques représentable valeurs minimales pour les types, ce qui implique que
char
est d'au moins 8 bits de long,int
est d'au moins 16 bits, etc.Donc il doit être décidé par la mise en œuvre (compilateur, OS, ...) et être documentées.
short long
.int
était de 16 bits, etshort long
était de 24.Les créateurs de ce compilateur a certainement un sens de l'humour.
Ouais, la taille de
double
a été donné comme "24 ou 32". C'était pour un microprocesseur.Ces garanties sont incomplètes. Il doit être également que
CHAR_BIT
est d'au moins 8,sizeof(int) * CHAR_BIT
doit être au moins de 16 ans, etc. Voir ici pour plus d'.Strictement parlant, la norme impose des exigences sur le plages des types d'entiers, de ne pas leur taille. En présence de rembourrage bits, il est possible d'avoir
sizeof (long) < sizeof (int)
, siint
a plus de rembourrage de bits quelong
. (Une telle mise en œuvre est peu probable.)OriginalL'auteur
Il dépend du compilateur.
Pour exemple : Essayez un vieux turbo compilateur C & qu'il donnerait la taille de 16 bits pour un int, car le mot de taille (La taille du processeur pourrait aborder avec moins d'effort) au moment de la rédaction du compilateur est de 16.
2
poursizeof int
, et il y aCHAR_BIT
bits dans un octet.sizeof
renvoie le nombre d'octets, et il n'a pas besoin d'être de 8 bits dans un octet.OriginalL'auteur loxxy
Il est dépend de la primaire compilateur.
si vous en turbo c désigne l'entier de la taille est de 2 octets.
sinon vous utilisez GNU gccompiler signifie l'entier de la taille est de 4 octets.
il dépend seulement de la mise en œuvre dans le compilateur C.
OriginalL'auteur Mani BK sys
La taille de l'entier est fondamentalement dépend de la
architecture
de votre système.En général, si vous avez un
16-bit
machine à alors votrecompiler
doit soutenir un int desize 2 byte.
Si votre système est 32 bits,alors le compilateur doit de soutien pour les 4 octets pour entier.
Dans plus de détails,
data bus
entre en image oui,16 bits ,32 bits ne signifie rien, mais lasize of data bus
dans votre système.conçu pour fournir max la taille du bus de données comme la taille de l'entier.
Le concept est,dans un ordinateur 64 bits, le compilateur peut soutenir jusqu'à 8 octets de données qui ne veut pas dire qu'il ne peut pas supporter de 4 octets.Pour parler simplement plus faible du système peut compatible avec la hausse des systèmes,le système est en 64 bits, mais le compilateur supportant jusqu'à 32 bits.donc, c'est montrer de 4 octets,rechercher la dernière version de compilateur.
OriginalL'auteur pradipta
Faire
int
aussi large que possible n'est pas le meilleur choix. (Le choix est fait par le ABI concepteurs.)Une architecture 64 bits comme le x86-64 peut opérer efficacement sur
int64_t
, il est donc naturel pourlong
à 64 bits. (Microsoft a gardélong
qu'en 32bit dans leur x86-64 ABI, pour diverses raisons de portabilité qui ont du sens donné le code et les Api. Ce n'est fondamentalement pas pertinent, car un code portable qu'il se soucie vraiment de type de taille, doivent être à l'aide deint32_t
etint64_t
au lieu de faire des hypothèses surint
etlong
.)Avoir
int
êtreint32_t
réellement fait pour le mieux, code plus efficace dans de nombreux cas. Un tableau deint
utiliser uniquement 4B par élément a seulement la moitié du cache empreinte d'un tableau deint64_t
. Aussi, spécifique pour x86-64, 32 bit opérande de taille est la valeur par défaut, donc 64 bits instructions de besoin, un code supplémentaire de l'octet pour un REX préfixe. Donc le code de la densité est mieux avec 32 bits (ou 8bit) des entiers de 16 ou 64 bits. (Voir le x86 wiki pour les liens vers les docs /guides /ressources d'apprentissage.)Si un programme doit être 64bit types d'entiers pour un fonctionnement correct, il n'est pas utilisé
int
. (Stocker un pointeur dans unint
au lieu d'uneintptr_t
est un bug, et nous ne devrions pas faire l'ABI pire pour accueillir de code cassé comme ça). Un programmeur écritint
sans doute attendre un 32 bits type, puisque la plupart des plates-formes de travail de cette façon. (La norme, bien sûr, ne garantit 16bits).Car il n'y a aucun espoir que
int
sera 64bit en général (par exemple sur les plates-formes 32 bits), et de le rendre 64bit de certains programmes plus lent (et presque pas de programmes plus rapides),int
est de 32 bits dans la plupart des 64bit ABIs.Aussi, il doit y avoir un nom pour un 32 bits de type entier, pour
int32_t
être untypedef
.OriginalL'auteur Peter Cordes
Oui.
int
taille dépend du compilateur taille.De 16 bits en entier de la gamme de l'entier est compris entre -32768 à 32767. Pour 32 & 64 bits compilateur va augmenter.
OriginalL'auteur Priyanka Gupta