int (Referencia de C#)int (C# Reference)

int denota un tipo entero que almacena valores según el tamaño y el intervalo que se indican en la tabla siguiente.int denotes an integral type that stores values according to the size and range shown in the following table.

TipoType IntervaloRange TamañoSize Tipo de .NET.NET type
int De -2.147.483.648 a 2.147.483.647-2,147,483,648 to 2,147,483,647 Entero de 32 bits con signoSigned 32-bit integer System.Int32

LiteralesLiterals

Puede declarar e inicializar una variable int mediante la asignación de un literal decimal, un literal hexadecimal o (a partir de C# 7.0) un literal binario.You can declare and initialize an int variable by assigning a decimal literal, a hexadecimal literal, or (starting with C# 7.0) a binary literal to it. Si el literal entero está fuera del intervalo de int (es decir, si es inferior a Int32.MinValue o mayor que Int32.MaxValue), se produce un error de compilación.If the integer literal is outside the range of int (that is, if it is less than Int32.MinValue or greater than Int32.MaxValue), a compilation error occurs.

En el ejemplo siguiente, los enteros que equivalen a 90 946 que se representan como literales binarios, hexadecimales y decimales se asignan a valores int.In the following example, integers equal to 90,946 that are represented as decimal, hexadecimal, and binary literals are assigned to int values.

int intValue1 = 90946;
Console.WriteLine(intValue1);
int intValue2 = 0x16342;
Console.WriteLine(intValue2);

int intValue3 = 0b0001_0110_0011_0100_0010;
Console.WriteLine(intValue3);
// The example displays the following output:
//          90946
//          90946
//          90946

Nota

Use el prefijo 0x o 0X para denotar un literal hexadecimal y el prefijo 0b o 0B para denotar un literal binario.You use the prefix 0x or 0X to denote a hexadecimal literal and the prefix 0b or 0B to denote a binary literal. Los literales decimales no tienen prefijo.Decimal literals have no prefix.

A partir de C# 7.0, se han agregado un par de características para mejorar la legibilidad.Starting with C# 7.0, a couple of features have been added to enhance readability.

  • C# 7.0 permite usar el carácter de subrayado, _, como separador de dígitos.C# 7.0 allows the usage of the underscore character, _, as a digit separator.
  • C# 7.2 permite usar _ como separador de dígitos de un literal binario o hexadecimal, después del prefijo.C# 7.2 allows _ to be used as a digit separator for a binary or hexadecimal literal, after the prefix. Un literal decimal no puede tener un carácter de subrayado inicial.A decimal literal isn't permitted to have a leading underscore.

A continuación se muestran algunos ejemplos.Some examples are shown below.

int intValue1 = 90_946;
Console.WriteLine(intValue1);

int intValue2 = 0x0001_6342;
Console.WriteLine(intValue2);

int intValue3 = 0b0001_0110_0011_0100_0010;
Console.WriteLine(intValue3);

int intValue4 = 0x_0001_6342;       // C# 7.2 onwards
Console.WriteLine(intValue4);

int intValue5 = 0b_0001_0110_0011_0100_0010;       // C# 7.2 onwards
Console.WriteLine(intValue5);
// The example displays the following output:
//          90946
//          90946
//          90946
//          90946
//          90946

Los literales enteros también pueden incluir un sufijo que denote el tipo, aunque no existe ningún sufijo que denote el tipo int.Integer literals can also include a suffix that denotes the type, although there is no suffix that denotes the int type. Si un literal entero no tiene sufijo, su tipo es el primero de los siguientes tipos en el que se puede representar su valor:If an integer literal has no suffix, its type is the first of the following types in which its value can be represented:

  1. int
  2. uintuint
  3. longlong
  4. ulongulong

En estos ejemplos, el literal 90946 es de tipo int.In these examples, the literal 90946 is of type int.

ConversionesConversions

Hay una conversión implícita predefinida de int a long, float, double o decimal.There is a predefined implicit conversion from int to long, float, double, or decimal. Por ejemplo:For example:

// '123' is an int, so an implicit conversion takes place here:
float f = 123;

Hay una conversión implícita predefinida de sbyte, byte, short, ushort o char a int.There is a predefined implicit conversion from sbyte, byte, short, ushort, or char to int. Por ejemplo, la instrucción de asignación siguiente producirá un error de compilación sin una conversión:For example, the following assignment statement will produce a compilation error without a cast:

long aLong = 22;
int i1 = aLong;       // Error: no implicit conversion from long.
int i2 = (int)aLong;  // OK: explicit conversion.

Observe también que no hay ninguna conversión implícita de tipos de punto flotante a int.Notice also that there is no implicit conversion from floating-point types to int. Por ejemplo, la instrucción siguiente genera un error del compilador a menos que se use una conversión explícita:For example, the following statement generates a compiler error unless an explicit cast is used:

int x = 3.0;         // Error: no implicit conversion from double.
int y = (int)3.0;    // OK: explicit conversion.

Para obtener más información sobre las expresiones aritméticas con combinaciones de tipos de punto flotante y tipos enteros, vea float y double.For more information on arithmetic expressions with mixed floating-point types and integral types, see float and double.

Especificación del lenguaje C#C# Language Specification

Para obtener más información, vea la sección Tipos enteros de la Especificación del lenguaje C#.For more information, see Integral types in the C# Language Specification. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.The language specification is the definitive source for C# syntax and usage.

Vea tambiénSee also