46 votes

Différence entre les types de données long et int

Étant donné que les instructions suivantes renvoient 4 , quelle est la différence entre les types int et long en C ++?

 sizeof(int)
sizeof(long)
 

53voto

Paul Sonier Points 25528

À partir de cette référence:

Un int était à l'origine destiné à être le "naturel" mot de la taille de la le processeur. De nombreux processeurs modernes peuvent gérer les différentes longueurs de mot avec l'égalité l'aise.

Aussi, ce morceau:

Sur la plupart (mais pas tous) de C et de C++ implémentations, une longue est plus grande que un int. Plus populaires d'aujourd'hui de bureau plates-formes telles que Windows et Linux, fonctionner principalement sur processeur 32 bits et la plupart des compilateurs pour ces plates-formes utilisent un 32 bits int qui a la même taille et de la représentation comme une longue.

42voto

Dan Olson Points 11210

Les garanties que le standard vous donne vont comme ceci:

 1 == sizeof(char) <= sizeof(short) <= sizeof (int) <= sizeof(long) <= sizeof(long long)
 

Il est donc parfaitement valide que sizeof (int) et sizeof (long) soient égaux, et de nombreuses plates-formes choisissent cette approche. Vous trouverez des plates-formes où int est 32 bits, long 64 bits et long long 128 bits, mais il semble très courant que sizeof (long) soit égal à 4.

(Notez que long long est reconnu en C, mais est normalement implémenté en tant qu’extension en C ++.)

17voto

Jonathan Leffler Points 299946

Vous êtes sur une machine 32 bits. Sur ma machine 64 bits, sizeof(int) == 4 , mais sizeof(long) == 8 .

Ils sont de types différents - parfois de la même taille, parfois pas.

(Dans les temps les plus anciens, sizeof(int) == 2 et sizeof(long) == 4 - bien que cela puisse être les jours qui ont précédé C ++, il faut y penser.)

4voto

JaredPar Points 333733

Sur les plates-formes où ils ont tous les deux la même taille, la réponse n’est rien. Ils représentent tous deux des valeurs signées de 4 octets.

Cependant, vous ne pouvez pas compter sur cela. La taille de long et int n'est pas définie de manière définitive par la norme. Il est possible pour les compilateurs de donner aux types des tailles différentes et donc de briser cette hypothèse.

3voto

abelenky Points 28063

Le long doit avoir au moins la même taille qu'un int et éventuellement, mais pas nécessairement plus longtemps.

Sur les systèmes 32 bits courants, int et long sont des octets / 32 bits, ce qui est valide conformément à la spécification C ++.

Sur d'autres systèmes, int et long long peuvent avoir une taille différente. J'avais l'habitude de travailler sur une plate-forme où int était de 2 octets et long de 4 octets.

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