int (справочник по C#)int (C# Reference)

int обозначает целочисленный тип данных, в котором хранятся значения, размер и диапазон которых приведен в следующей таблице.int denotes an integral type that stores values according to the size and range shown in the following table.

ТипType ДиапазонRange РазмерSize Тип .NET.NET type
int От -2 147 483 648 до 2 147 483 647-2,147,483,648 to 2,147,483,647 32-разрядное целое число со знакомSigned 32-bit integer System.Int32

ЛитералыLiterals

Переменную int можно объявить и инициализировать, назначив ей десятичный, шестнадцатеричный или (начиная с C# 7.0) двоичный литерал.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. Если целочисленный литерал выходит за пределы диапазона int (то есть если он меньше Int32.MinValue или больше Int32.MaxValue), возникает ошибка компиляции.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.

В следующем примере целые числа, равные 90 946 и представленные в виде десятичного, шестнадцатеричного и двоичного литерала, назначаются значениям 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

Примечание

Для обозначения шестнадцатеричного литерала используйте префикс 0x или 0X, а для обозначения двоичного литерала — префикс 0b или 0B.You use the prefix 0x or 0X to denote a hexadecimal literal and the prefix 0b or 0B to denote a binary literal. У десятичных литералов префиксов нет.Decimal literals have no prefix.

Начиная с C# 7.0 было добавлено несколько возможностей для повышения удобства чтения.Starting with C# 7.0, a couple of features have been added to enhance readability.

  • В C# 7.0 поддерживается использование символа подчеркивания (_) в качестве разделителя цифр.C# 7.0 allows the usage of the underscore character, _, as a digit separator.
  • В C# 7.2 поддерживается использование _ (после префикса) в качестве разделителя для двоичного или шестнадцатеричного литерала.C# 7.2 allows _ to be used as a digit separator for a binary or hexadecimal literal, after the prefix. Десятичный литерал не может начинаться с символа подчеркивания.A decimal literal isn't permitted to have a leading underscore.

Ниже приведено несколько примеров.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

Целочисленные литералы могут содержать суффикс, обозначающий тип, несмотря на то, что для обозначения типа int суффикс не предусмотрен.Integer literals can also include a suffix that denotes the type, although there is no suffix that denotes the int type. Если целочисленный литерал не имеет суффикса, его типом будет первый из следующих типов, в котором может быть представлено его значение: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

В этих примерах литерал 90946 имеет тип int.In these examples, the literal 90946 is of type int.

ПреобразованияConversions

Существует предопределенное неявное преобразование типа int в тип long, float, double или decimal.There is a predefined implicit conversion from int to long, float, double, or decimal. Например:For example:

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

Существует предопределенное неявное преобразование типа sbyte, byte, short, ushort или char в int.There is a predefined implicit conversion from sbyte, byte, short, ushort, or char to int. Например, следующий оператор назначения вызывает ошибку компиляции без приведения: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.

Обратите внимание, что неявного преобразования типов с плавающей запятой в тип int не существует.Notice also that there is no implicit conversion from floating-point types to int. Например, следующая инструкция приводит к ошибке компилятора, если не выполнить явное приведение типов: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.

Дополнительные сведения об арифметических выражениях, в которых одновременно используются переменные типов с плавающей запятой и целочисленных типов, см. в разделах float и double.For more information on arithmetic expressions with mixed floating-point types and integral types, see float and double.

Спецификация языка C#C# Language Specification

Дополнительные сведения см. в разделе Целочисленные типы в Спецификации языка C#.For more information, see Integral types in the C# Language Specification. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.The language specification is the definitive source for C# syntax and usage.

См. такжеSee also