62 votos

¿Cuál es la diferencia entre int, Int16, Int32 y Int64?

¿Cuál es la diferencia entre int, System.Int16, System.Int32 y System.Int64 aparte de sus tamaños?

110voto

akash88 Puntos 2399

Cada tipo de entero tiene un rango diferente de capacidad de almacenamiento

   Tipo      Capacidad

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

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

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

Como afirmó James Sutherland en su respuesta:

int e Int32 son de hecho sinónimos; int será un poco más familiar, Int32 hace que los 32 bits sean más explícitos para aquellos que leen tu código. Me inclinaría a usar int cuando solo necesito 'un entero', Int32 donde el tamaño es importante (código criptográfico, estructuras) para que los futuros mantenedores sepan que es seguro aumentar un int si es necesario, pero deben tener cuidado al cambiar variables Int32 de la misma manera.

El código resultante será idéntico: la diferencia es puramente en cuanto a legibilidad o apariencia del código.

55voto

JaredPar Puntos 333733

La única diferencia real aquí es el tamaño. Todos los tipos de enteros aquí son valores enteros con signo que tienen tamaños variables

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

Hay una pequeña diferencia entre Int64 y el resto. En una plataforma de 32 bits, no se garantiza que las asignaciones a una ubicación de almacenamiento Int64 sean atómicas. Se garantiza para todos los otros tipos.

7voto

Praveen Puntos 114

Según Jeffrey Richter (uno de los contribuyentes del desarrollo del framework .NET) en su libro 'CLR via C#':

int es un tipo primitivo permitido por el compilador de C#, mientras que Int32 es el tipo de la Biblioteca de Clases del Framework (disponible en varios lenguajes que siguen el CLS). De hecho, int se traduce a Int32 durante la compilación.

También,

En C#, long se mapea a System.Int64, pero en un lenguaje de programación diferente, long podría mapear a Int16 o Int32. De hecho, C++/CLI trata long como Int32.

De hecho, la mayoría de los lenguajes (.NET) ni siquiera tratarán long como una palabra clave y no compilarán código que lo utilice.

He visto a este autor y a mucha literatura estándar de .NET prefiriendo los tipos de la FCL (es decir, Int32) a los tipos primitivos específicos del lenguaje (es decir, int), principalmente por preocupaciones de interoperabilidad.

6voto

duskwuff Puntos 69245

Nada. La única diferencia entre los tipos es su tamaño (y, por lo tanto, el rango de valores que pueden representar).

6voto

Sunil Kumar B M Puntos 1441
  1. int y int32 son lo mismo (entero de 32 bits)
  2. int16 es int corto (2 bytes o 16 bits)
  3. int64 es el tipo de datos long (8 bytes o 64 bits)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X