275 votes

Quelle est la différence entre int, Int16, Int32 et Int64 ?

Quelle est la différence entre int , System.Int16 , System.Int32 y System.Int64 autres que leurs tailles ?

413voto

akash88 Points 2399

Chaque type d'entier a une capacité de stockage différente.

   Type      Capacity

   Int16 -- (-32,768 to +32,767)

   Int32 -- (-2,147,483,648 to +2,147,483,647)

   Int64 -- (-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807)

Comme l'a déclaré James Sutherland dans sa réponse :

int y Int32 sont en effet synonymes ; int sera un peu plus familier, Int32 rend le caractère 32-bits plus explicite pour ceux qui qui lisent votre code. Je serais enclin à utiliser int lorsque j'ai juste besoin de d'un entier, Int32 où la taille est importante (code cryptographique, structures) afin que les futurs mainteneurs sachent qu'il est sûr d'agrandir une int si nécessaire, mais il faut veiller à changer Int32 variables de la même manière.

Le code résultant sera identique : la différence est purement une question de lisibilité ou l'apparence du code.

1 votes

Si vous savez que la valeur ne va pas dépasser 65 535 (signé) ou 32 768 à 32 767 (non signé), ne serait-il pas préférable de définir l'entier comme suit int16 pour économiser la ressource mémoire, au lieu d'utiliser simplement int ?

9 votes

Int et int32 peuvent être synonymes, mais ils ne doivent pas l'être. De nos jours, la plupart des systèmes vendus sont 64 bits, auquel cas un int sera de 64 bits.

4 votes

Pour Matthew T. Baker et tous ceux qui, comme moi, sont venus ici pour essayer de décider lequel utiliser du point de vue des performances, vous devriez consulter cet article qui suggère que Integer est plus efficace que Int16 dans de nombreux cas : stackoverflow.com/questions/129023/net-integer-vs-int16

129voto

JaredPar Points 333733

La seule vraie différence ici est la taille. Tous les types int sont des valeurs entières signées qui ont des tailles différentes.

  • Int16 : 2 octets
  • Int32 y int : 4 octets
  • Int64 : 8 octets

Il y a une petite différence entre Int64 et le reste. Sur une plate-forme 32 bits, les affectations à un Int64 l'emplacement de stockage ne sont pas garantis d'être atomiques. Elle est garantie pour tous les autres types.

0 votes

Si j'utilise Int64 en 32 bit Windows Operating System Quels sont alors les problèmes auxquels je pourrais être confronté ? Y a-t-il un exemple ?

79voto

Haris Points 460

int

C'est un type de données primitif défini en C#.

Il est mappé en Int32 de type FCL.

Il s'agit d'un type de valeur et représente la structure System.Int32.

Il est signé et prend 32 bits.

Il a une valeur minimale de -2147483648 et maximale de +2147483647.

Int16

Il s'agit d'un type FCL.

En C#, court est mis en correspondance avec Int16.

C'est un type de valeur et représente la structure System.Int16.

Il est signé et prend 16 bits.

Il a une valeur minimale de -32768 et maximale de +32767.

Int32

Il s'agit d'un type FCL.

En C#, int est mis en correspondance avec Int32.

Il s'agit d'un type de valeur et représente la structure System.Int32.

Il est signé et prend 32 bits.

Il a une valeur minimale de -2147483648 et maximale de +2147483647.

Int64

Il s'agit d'un type FCL.

En C#, long est mis en correspondance avec Int64.

C'est un type de valeur et représente la structure System.Int64.

Il est signé et prend 64 bits.

Il a une valeur minimale de -9,223,372,036,854,775,808 et maximale de 9,223,372,036,854,775,807.

0 votes

Juste pour ajouter que Int64 Le type de données peut être représenté en utilisant L o l tandis que Int16 o Int32 n'ont pas de suffixe en C#.

16voto

Praveen Points 114

Selon le livre de Jeffrey Richter (l'un des contributeurs au développement du cadre .NET) intitulé "CLR via C#" :

int est un type primitif autorisé par le compilateur C#, tandis que Int32 est le type de la Framework Class Library (disponible dans tous les langages qui respectent la CLS). En fait, int se traduit par Int32 lors de la compilation.

Aussi,

En C#, long correspond à System.Int64, mais dans un autre langage de programmation, long pourrait de programmation différent, long pourrait correspondre à Int16 ou Int32. En fait, C++/CLI traite traite le long comme Int32.

En fait, la plupart des langages (.NET) ne traitent même pas le mot long comme un mot clé et ne compilent pas le code qui l'utilise. compilent pas le code qui l'utilise.

J'ai vu cet auteur, ainsi que de nombreux ouvrages standard sur .NET, préférer les types FCL (c'est-à-dire Int32) aux types primitifs spécifiques au langage (c'est-à-dire int), principalement pour des raisons d'interopérabilité.

8voto

duskwuff Points 69245

Rien. La seule différence entre les types est leur taille (et, par conséquent, la gamme de valeurs qu'ils peuvent représenter).

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