Типы данных integer: Тип данных Integer — Visual Basic

Содержание

Тип данных Integer — Visual Basic

  • Чтение занимает 2 мин

В этой статье

Содержит 32-разрядные (4-байтовые) целые числа со знаком в диапазоне от -2 147 483 648 до 2 147 483 647.Holds signed 32-bit (4-byte) integers that range in value from -2,147,483,648 through 2,147,483,647.

КомментарииRemarks

Тип данных Integer обеспечивает оптимальную производительность на 32-разрядных процессорах.The Integer data type provides optimal performance on a 32-bit processor. Другие целочисленные типы загружаются в память и сохраняются в памяти с более низкой скоростью.The other integral types are slower to load and store from and to memory.

Значение по умолчанию для типа Integer — 0.The default value of Integer is 0.

Присваивания литераловLiteral assignments

Вы можете объявить и инициализировать Integer переменную, назначив ей десятичный литерал, шестнадцатеричный литерал, Восьмеричный литерал или (начиная с Visual Basic 2017) двоичный литерал.You can declare and initialize an Integer variable by assigning it a decimal literal, a hexadecimal literal, an octal literal, or (starting with Visual Basic 2017) a binary literal. Если целочисленный литерал выходит за пределы диапазона Integer (то есть, если он меньше Int32.MinValue или больше Int32.MaxValue), возникает ошибка компиляции.If the integer literal is outside the range of Integer (that is, if it is less than Int32.MinValue or greater than Int32.MaxValue, a compilation error occurs.

В следующем примере целые числа, равные 90 946 и представленные в виде десятичного, шестнадцатеричного и двоичного литерала, назначаются значениям Integer.In the following example, integers equal to 90,946 that are represented as decimal, hexadecimal, and binary literals are assigned to Integer values.

Dim intValue1 As Integer = 90946
Console.WriteLine(intValue1)
Dim intValue2 As Integer = &h26342
Console.WriteLine(intValue2)

Dim intValue3 As Integer = &B0001_0110_0011_0100_0010
Console.WriteLine(intValue3)
' The example displays the following output:
'          90946
'          90946
'          90946

Примечание

Используйте префикс &h или &H , чтобы обозначить шестнадцатеричный литерал, префикс &b или &B обозначить двоичный литерал, а также префикс &o или &O обозначить Восьмеричный литерал.You use the prefix

&h or &H to denote a hexadecimal literal, the prefix &b or &B to denote a binary literal, and the prefix &o or &O to denote an octal literal. У десятичных литералов префиксов нет.Decimal literals have no prefix.

Начиная с Visual Basic 2017, можно также использовать символ подчеркивания () в _ качестве разделителя цифр, чтобы улучшить удобочитаемость, как показано в следующем примере.Starting with Visual Basic 2017, you can also use the underscore character, _, as a digit separator to enhance readability, as the following example shows.

Dim intValue1 As Integer = 90_946
Console.WriteLine(intValue1)

Dim intValue2 As Integer = &H0001_6342
Console.WriteLine(intValue2)

Dim intValue3 As Integer = &B0001_0110_0011_0100_0010
Console.WriteLine(intValue3)
' The example displays the following output:
'          90946
'          90946
'          90946

Начиная с Visual Basic 15,5, можно также использовать символ подчеркивания () в _ качестве начального разделителя между префиксом и шестнадцатеричными, двоичными или восьмеричными цифрами.Starting with Visual Basic 15.5, you can also use the underscore character (_) as a leading separator between the prefix and the hexadecimal, binary, or octal digits. Пример:For example:

Dim number As Integer = &H_C305_F860

Чтобы использовать символ подчеркивания в качестве начального разделителя, нужно добавить в файл проекта Visual Basic (*.vbproj) следующий элемент:To use the underscore character as a leading separator, you must add the following element to your Visual Basic project (*.vbproj) file:

<PropertyGroup>
  <LangVersion>15.5</LangVersion>
</PropertyGroup>

Для получения дополнительной информации см.For more information see setting the Visual Basic language version.

Числовые литералы также могут включать I символ типа для обозначения Integer типа данных, как показано в следующем примере.Numeric literals can also include the I type character to denote the Integer data type, as the following example shows.

Dim number = &H_035826I

Советы по программированиюProgramming tips

  • Вопросы взаимодействия.Interop Considerations. При взаимоработе с компонентами, которые не записываются для .NET Framework, таких как автоматизация или COM-объекты, помните, что Integer в других средах ширина данных (16 бит) отличается.If you are interfacing with components not written for the .NET Framework, such as Automation or COM objects, remember that Integer has a different data width (16 bits) in other environments. При передаче 16-разрядного аргумента такому компоненту в новом коде Visual Basic следует объявить его как

    Short, а не как Integer.If you are passing a 16-bit argument to such a component, declare it as Short instead of Integer in your new Visual Basic code.

  • Расширяющие.Widening. Тип данных Integer можно расширить до Long, Decimal, Single или Double.The Integer data type widens to Long, Decimal, Single, or Double. Это означает, что тип Integer можно преобразовать в любой из этих типов без возникновения ошибки System.OverflowException.This means you can convert Integer to any one of these types without encountering a System.OverflowException error.

  • Символы типа.Type Characters. При добавлении к литералу символа типа литерала I производится принудительное приведение литерала к типу данных

    Integer.Appending the literal type character I to a literal forces it to the Integer data type. При добавлении символа идентификатора типа % к любому идентификатору производится принудительное приведение этого идентификатора к типу Integer.Appending the identifier type character % to any identifier forces it to Integer.

  • Тип Framework.Framework Type. В .NET Framework данный тип соответствует структуре System.Int32.The corresponding type in the .NET Framework is the System.Int32 structure.

ДиапазонRange

При попытке присвоить целочисленной переменной значение, лежащее за пределами диапазона данного типа, возникает ошибка.If you try to set a variable of an integral type to a number outside the range for that type, an error occurs. При попытке задать дробное значение оно округляется вверх или вниз до ближайшего целого значения.If you try to set it to a fraction, the number is rounded up or down to the nearest integer value. Если число находится точно посередине между двумя целыми числами, значение округляется до ближайшего четного целого.If the number is equally close to two integer values, the value is rounded to the nearest even integer. Такое поведение минимизирует ошибки округления, происходящие от постоянного округления среднего значения в одном направлении.This behavior minimizes rounding errors that result from consistently rounding a midpoint value in a single direction. В следующем коде приведены примеры округления.The following code shows examples of rounding.

' The valid range of an Integer variable is -2147483648 through +2147483647.  
Dim k As Integer  
' The following statement causes an error because the value is too large.  
k = 2147483648  
' The following statement sets k to 6.  
k = 5.9  
' The following statement sets k to 4  
k = 4.5  
' The following statement sets k to 6  
' Note, Visual Basic uses banker’s rounding (toward nearest even number)  
k = 5.5  

См. также разделSee also

Целочисленные типы данных в C++: short, int и long | Уроки С++

  Обновл. 9 Июл 2020  | 

На этом уроке мы рассмотрим целочисленные типы данных, их диапазоны значений, операцию деления, а также переполнение: что это такое и примеры.

Целочисленные типы данных

Целочисленный тип данных — это тип, переменные которого могут содержать только целые числа (без дробной части, например: -2, -1, 0, 1, 2). В языке C++ есть 5 основных целочисленных типов, доступных для использования:

КатегорияТипМинимальный размер
Символьный тип данныхchar1 байт
Целочисленный тип данныхshort2 байта
int2 байта (но чаще всего 4 байта)
long4 байта
long long8 байт

Примечание: Тип char — это особый случай: он является как целочисленным, так и символьным типом данных. Об этом детально мы поговорим на одном из следующих уроков.

Основным различием между целочисленными типами, перечисленными выше, является их размер, чем он больше, тем больше значений сможет хранить переменная этого типа.

Определение целочисленных переменных

Определение происходит следующим образом:

char c; short int si; // допустимо short s; // предпочтительнее int i; long int li; // допустимо long l; // предпочтительнее long long int lli; // допустимо long long ll; // предпочтительнее

char c;

short int si; // допустимо

short s;      // предпочтительнее

int i;

long int li; // допустимо

long l;      // предпочтительнее

long long int lli; // допустимо

long long ll;      // предпочтительнее

В то время как полные названия short intlong int и long long int могут использоваться, их сокращенные версии (без int) более предпочтительны для использования. К тому же постоянное добавление int затрудняет чтение кода (легко перепутать с именем переменной).

Диапазоны значений и знак целочисленных типов данных

Как вы уже знаете из предыдущего урока, переменная с n-ным количеством бит может хранить 2возможных значений. Но что это за значения? Это значения, которые находятся в диапазоне. Диапазон — это значения от и до, которые может хранить определенный тип данных. Диапазон целочисленной переменной определяется двумя факторами: её размером (измеряется в битах) и её знаком (который может быть signed или unsigned).

Целочисленный тип signed (со знаком) означает, что переменная может содержать как положительные, так и отрицательные числа. Чтобы объявить переменную как signed, используйте ключевое слово signed:

signed char c; signed short s; signed int i; signed long l; signed long long ll;

signed char c;

signed short s;

signed int i;

signed long l;

signed long long ll;

По умолчанию, ключевое слово signed пишется перед типом данных.

1-байтовая целочисленная переменная со знаком (signed) имеет диапазон значений от -128 до 127, т.е. любое значение от -128 до 127 (включительно) может храниться в ней безопасно.

В некоторых случаях мы можем заранее знать, что отрицательные числа в программе использоваться не будут. Это очень часто встречается при использовании переменных для хранения количества или размера чего-либо (например, ваш рост или вес не может быть отрицательным).

Целочисленный тип unsigned (без знака) может содержать только положительные числа. Чтобы объявить переменную как unsigned, используйте ключевое слово unsigned:

unsigned char c; unsigned short s; unsigned int i; unsigned long l; unsigned long long ll;

unsigned char c;

unsigned short s;

unsigned int i;

unsigned long l;

unsigned long long ll;

1-байтовая целочисленная переменная без знака (unsigned) имеет диапазон значений от 0 до 255.

Обратите внимание, объявление переменной как unsigned означает, что она не сможет содержать отрицательные числа (только положительные).

Теперь, когда вы поняли разницу между signed и unsigned, давайте рассмотрим диапазоны значений разных типов данных:

Размер/ТипДиапазон значений
1 байт signedот -128 до 127
1 байт unsignedот 0 до 255
2 байта signedот -32 768 до 32 767
2 байта unsignedот 0 до 65 535
4 байта signedот -2 147 483 648 до 2 147 483 647
4 байта unsignedот 0 до 4 294 967 295
8 байтов signedот -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807
8 байтов unsignedот 0 до 18 446 744 073 709 551 615

Для математиков: Переменная signed с n-ным количеством бит имеет диапазон от -(2n-1) до 2n-1-1. Переменная unsigned с n-ным количеством бит имеет диапазон от 0 до (2n)-1.

Для нематематиков: Используем таблицу 🙂

Начинающие программисты иногда путаются между signed и unsigned переменными. Но есть простой способ запомнить их различия. Чем отличается отрицательное число от положительного? Правильно! Минусом спереди. Если минуса нет, значит число — положительное. Следовательно, целочисленный тип со знаком (signed) означает, что минус может присутствовать, т.е. числа могут быть как положительными, так и отрицательными. Целочисленный тип без знака (unsigned) означает, что минус спереди отсутствует, т.е. числа могут быть только положительными.

Что используется по умолчанию: signed или unsigned?

Так что же произойдет, если мы объявим переменную без указания signed или unsigned?

КатегорияТипПо умолчанию
Символьный тип данныхcharsigned или unsigned (в большинстве случаев signed)
Целочисленный тип данныхshortsigned
intsigned
longsigned
long longsigned

Все целочисленные типы данных, кроме char, являются signed по умолчанию. Тип char может быть как signed, так и unsigned (но, обычно, signed).

В большинстве случаев ключевое слово signed не пишется (оно и так используется по умолчанию).

Программисты, как правило, избегают использования целочисленных типов unsigned, если в этом нет особой надобности, так как с переменными unsigned ошибок, по статистике, возникает больше, нежели с переменными signed.

Правило: Используйте целочисленные типы signed, вместо unsigned.

Переполнение

Вопрос: «Что произойдет, если мы попытаемся использовать значение, которое находится вне диапазона значений определенного типа данных?». Ответ: «Переполнение».

Переполнение (англ. «overflow») случается при потере бит из-за того, что переменной не было выделено достаточно памяти для их хранения.

На уроке №28 мы говорили о том, что данные хранятся в бинарном (двоичном) формате и каждый бит может иметь только 2 возможных значения (0 или 1). Вот как выглядит диапазон чисел от 0 до 15 в десятичной и двоичной системах:

Десятичная системаДвоичная система
00
11
210
311
4100
5101
6110
7111
81000
91001
101010
111011
121100
131101
141110
151111

Как вы можете видеть, чем больше число, тем больше ему требуется бит. Поскольку наши переменные имеют фиксированный размер, то на них накладываются ограничения на количество данных, которые они могут хранить.

Примеры переполнения

Рассмотрим переменную unsigned, которая состоит из 4-х бит. Любое из двоичных чисел, перечисленных в таблице выше, поместится внутри этой переменной.

«Но что произойдет, если мы попытаемся присвоить значение, которое занимает больше 4-х бит?». Правильно! Переполнение. Наша переменная будет хранить только 4 наименее значимых (те, что справа) бита, все остальные — потеряются.

Например, если мы попытаемся поместить число 21 в нашу 4-битную переменную:

Десятичная системаДвоичная система
2110101

Число 21 занимает 5 бит (10101). 4 бита справа (0101) поместятся в переменную, а крайний левый бит (1) просто потеряется. Т.е. наша переменная будет содержать 0101, что равно 101 (нуль спереди не считается), а это уже число 5, а не 21.

Примечание: О конвертации чисел из двоичной системы в десятичную и наоборот будет отдельный урок, где мы всё детально рассмотрим и обсудим.

Теперь рассмотрим пример в коде (тип short занимает 16 бит):

#include <iostream> int main() { unsigned short x = 65535; // наибольшее значение, которое может хранить 16-битная unsigned переменная std::cout << «x was: » << x << std::endl; x = x + 1; // 65536 — это число больше максимально допустимого числа из диапазона допустимых значений. Следовательно, произойдёт переполнение, так как переменнная x не может хранить 17 бит std::cout << «x is now: » << x << std::endl; return 0; }

#include <iostream>

int main()

{

    unsigned short x = 65535; // наибольшее значение, которое может хранить 16-битная unsigned переменная

    std::cout << «x was: » << x << std::endl;

    x = x + 1; // 65536 — это число больше максимально допустимого числа из диапазона допустимых значений. Следовательно, произойдёт переполнение, так как переменнная x не может хранить 17 бит

    std::cout << «x is now: » << x << std::endl;

    return 0;

}

Результат выполнения программы:

x was: 65535
x is now: 0

Что случилось? Произошло переполнение, так как мы попытались присвоить переменной x значение больше, чем она способна в себе хранить.

Для тех, кто хочет знать больше: Число 65 535 в двоичной системе счисления представлено как 1111 1111 1111 1111. 65 535 — это наибольшее число, которое может хранить 2-байтовая (16 бит) целочисленная переменная без знака, так как это число использует все 16 бит. Когда мы добавляем 1, то получаем число 65 536. Число 65 536 представлено в двоичной системе как 1 0000 0000 0000 0000, и занимает 17 бит! Следовательно, самый главный бит (которым является 1) теряется, а все 16 бит справа — остаются. Комбинация 0000 0000 0000 0000 соответствует десятичному 0, что и является нашим результатом.

Аналогичным образом, мы получим переполнение, использовав число меньше минимального из диапазона допустимых значений:

#include <iostream> int main() { unsigned short x = 0; // наименьшее значение, которое 2-байтовая unsigned переменная может хранить std::cout << «x was: » << x << std::endl; x = x — 1; // переполнение! std::cout << «x is now: » << x << std::endl; return 0; }

#include <iostream>

int main()

{

    unsigned short x = 0; // наименьшее значение, которое 2-байтовая unsigned переменная может хранить

    std::cout << «x was: » << x << std::endl;

    x = x — 1; // переполнение!

    std::cout << «x is now: » << x << std::endl;

    return 0;

}

Результат выполнения программы:

x was: 0
x is now: 65535

Переполнение приводит к потере информации, а это никогда не приветствуется. Если есть хоть малейшее подозрение или предположение, что значением переменной может быть число, которое находится вне диапазона допустимых значений используемого типа данных — используйте тип данных побольше!

Правило: Никогда не допускайте возникновения переполнения в ваших программах!

Деление целочисленных переменных

В языке C++ при делении двух целых чисел, где результатом является другое целое число, всё довольно предсказуемо:

#include <iostream> int main() { std::cout << 20 / 4 << std::endl; return 0; }

#include <iostream>

int main()

{

    std::cout << 20 / 4 << std::endl;

    return 0;

}

Результат:

5

Но что произойдет, если в результате деления двух целых чисел мы получим дробное число? Например:

#include <iostream> int main() { std::cout << 8 / 5 << std::endl; return 0; }

#include <iostream>

int main()

{

    std::cout << 8 / 5 << std::endl;

    return 0;

}

Результат:

1

В языке C++ при делении целых чисел результатом всегда будет другое целое число. А такие числа не могут иметь дробь (она просто отбрасывается, не округляется!).

Рассмотрим детально пример выше: 8 / 5 = 1.6. Но, как мы уже знаем, при делении целых чисел, результатом является другое целое число. Таким образом, дробная часть (0.6) значения отбрасывается и остается 1.

Правило: Будьте осторожны при делении целых чисел, так как любая дробная часть всегда отбрасывается.


Оценить статью:

Загрузка…

Поделиться в социальных сетях:

Тип данных Integer.

Тип INTEGER (целый). Этот тип представляет множество целых чисел диапазона от -32768 до 32767. В памяти ЭВМ  под целое число отводится два байта (16 бит).

Наибольшему значению целого числа 32767 соответствует стандартный идентификатор MAXINT, а наименьшему – выpaжeниe NOT(MAXINT)=-(MAXINT+1), или число -32768. Операции, проводимые над целыми числами: «+» сложение, «-» вычитание, «*» умножение, DIV — целочисленное деление, MOD — остаток от целочисленного деления, AND — арифметическое ‘И’, OR — арифметическое ‘ИЛИ’, NOT – арифметическое отрицание, XOR — исключающая дизъюнкция. Примеры использования этих операций приведены в таблице1.

Любая из этих операций выполнима над двумя целыми числами, если абсолютная величина результата не превышает MAXINT (для умножения). В противном случае возникает прерывание программы, связанное с переполнением.
Например: требуется вычислить выражение 1000 * 4000 div 2000. Поскольку операции умножения и деления имеют один приоритет и выполняются слева направо в порядке записи арифметического выражения, то при умножении произойдет прерывание, связанное с переполнением. Выход из этой ситуации возможен при изменении порядка выполнения операций умножения и деления, для чего используются круглые скобки ==> 1000 * (4000 div 2000).
Предусмотрено представление целых чисел в шестнадцатеричной системе счисления. Форма записи таких чисел $Х, где X — целая константа, а символ $ — признак. Примеры: $57, $1FF. Напомним, что в шестнадцатеричной системе счисления цифры 10, 11, 12, 13, 14 и 15 заменяются латинскими буквами А, В, С, D, Е и F соответственно.
Кроме типа INTEGER в языке Pascal предусмотрены и другие целые типы данных BYTE, SHORTINT, WORD и LONGINT (таблица 2). Все эти типы определены на множестве целых чисел, характеризуются одним набором арифметических операций и отличаются диапазоном значений и объемом занимаемой памяти.


Предыдущая статья: Алфавит языка Pascal.
Оглавление: Лекции по Pascal.
Следующая статья: Тип данных Real.


Целые типы

В языке Паскаль определено пять целых типов.

Таблица. Целые типы Pascal

ТипДиапазон допустимых значенийОтводимая память, в байтах
shortint-128…1271
integer-32 768…32 7672
longint-2 147 483 648…2 147 483 6474
byte0…2551
word0…65 5352

Переменные целого типа могут принимать только целые значения. Такие переменные в программе описываются следующим образом:

Здесь a, b, c… — имена переменных, integer – тип переменных. Транслятор, встретив такое описание переменных a, b, c, запоминает, что эти переменные могут принимать только целые значения и формирует соответственно этому команды программы.

Таблица. Операции над целыми типами, дающие в результате значение целого типа

Знак операцииОперация
+Сложение
Вычитание
*Умножение
divЦелочисленное деление (остаток отбрасывается). Деление без округления (целая часть частного).
modДеление по модулю (выделение остатка от деления). Остаток от деления: a mod b = a – ((a div b) * b).

Операции над операндами целого типа выполняются правильно только при условии, что результат и каждый операнд не меньше минимального (крайнего левого) и не больше максимального (крайнего правого) значений диапазона. Например, в Паскале существует константа maxint, в которой содержится максимально допустимое значение для типа integer. Тогда при выполнении операций в программе должны соблюдаться следующие условия:
(a операция b) <= maxint,
a <= maxint, b <= maxint.

Над целыми типами, как и многими другими, допустимы операции отношения (сравнения). Результат таких операций относится к типу boolean и может принимать одно из двух значений – либо true (истина), либо false (ложь).

Таблица. Операции отношения

Знак операцииОперация
=Равно
<>Не равно
>=Больше или равно
>Больше
<=Меньше или равно
<Меньше

Целые типы могут приниматься в качестве фактических параметров рядом стандартных функций языка программирования Pascal.

Таблица. Стандартные функции Pascal, применимые к аргументам целых типов

ФункцияТип результатаРезультат выполнения
abs(x)ЦелыйМодуль x (абсолютная величина x)
sqr(x)ЦелыйКвадрат x
succ(x)ЦелыйСледующее значение x (x+1)
pred(x)ЦелыйПредыдущее значение x (x-1)
random(x)ЦелыйСлучайное целое число из интервала 0..x-1.
sin(x)ДействительныйСинус x (угол в радианах)
cos(x)ДействительныйКосинус x (угол в радианах)
arctan(x)ДействительныйАрктангенс x (угол в радианах)
ln(x)ДействительныйНатуральный логарифм x
exp(x)ДействительныйЭкспонента x
sqrt(x)ДействительныйКвадратный корень из x
odd(x)ЛогическийЗначение true, если x – нечетное число; false – если четное.

Функция random возвращает равномерно распределенное случайное целое число, если ей передан целый аргумент. При повторном запуске программы она возвращает те же значения. Во избежание этого следует в начале программы вызвать процедуру без параметров randomize.

Процедуры inc и dec могут иметь по одному или по два параметра целого типа. Если параметров два, то значение первого увеличивается (для inc) или уменьшается (для dec) на величину, равную значению второго параметра. Например, inc(x,2) равнозначно x+2. Если параметр один, то его значение увеличивается (для inc) или уменьшается (для dec) на единицу. Например, dec(x) равнозначно x-1. (ТАКИХ ПРОЦЕДУР ВО FREEPASCAL СКОРЕЕ ВСЕГО НЕТ.)

Следующие функции принимают в качестве аргументов значения вещественного типа, а возвращают значения целого типа:
trunc(x) – отбрасывание десятичных знаков после точки;
round(x) – округление до целого.

Примеры работы некоторых приведенных выше операций и функций:
Пример 1. Пусть a = 17, b = 5. Тогда a div b дает 3, a mod b дает 2 (остаток от деления), sqr(b) дает 25.
Пример 2. Пусть x = 4.7389. Тогда trunc(x) дает 4, round(x) дает 5.
Пример 3. Выражение 4 * 21 дает результат целого типа, а 4 * 21.0 – вещественного, т.к. один из сомножителей вещественный.

Типы данных в информатике. Тип Integer

К концу 2018 года в мире насчитывается несколько сот языков программирования, меньшая часть из них представлена узкоспециализированными языками, такими как, например, Ada (язык, изобретенный ВВС США для управления баллистическими ракетами) или Fortran, в основном применяемый в научной разработке программного обеспечения. Но большинство из них общедоступно для понимания и изучения и находят широкое применение.

Типы данных в информатике — это структурная и размерная характеристика выделенной ячейки памяти, в которую можно поместить некоторое значение для дальнейших операций. Одним из таких типов является тип integer (int). Это целочисленный тип данных. То есть поместить в зарезервированную ячейку типа integer можно только целое число (0, 1, 2, 256, 10000 и так далее).

Диапазон значений, которые можно положить в ячейку типа integer, отличается в других языках программирования и на разных процессорах, например в языке программирования Pascal составляет от -32768 до 32768. Попытка «положить» данные больше или меньше данного диапазона вызовет «ошибку переполнения данных».

Характеристики типа данных integer

В 32-разрядных архитектурах занимают от −2 147 483 648 (-231) до 2 147 483 647 (231−1)

Существуют типы integer, без знаков. Например, unsigned int в C#. Неправильное использование таких типов данных может приводить к ошибкам.

Также существуют различные вариации типа integer, такие как:

  • short int — предусматривается с целью сократить количество памяти, выделяемой под нужды программиста.
  • long int — напротив, создан для тех, кто боится, что в ходе работы программы есть риск «вылететь» за пределы обычного int и получить «ошибку переполнения данных».

Типы integer, real, dint (в языке Pascal) относятся к математическим типам данных. Это значит, что возможно производить математические действия — сложение, умножение, вычитание, деление.

Характеристики типа integer real

Для запоминания вещественного числа в ОЗУ отводится шесть байтов памяти, поэтому расчеты всегда выполняются с конечной точностью, зависящей от формата числа. Вещественные данные хранятся как целое число с плавающей десятичной точкой.

Другие типы данных в популярных языках программирования

Char — символьный тип данных, может хранить в себе 1 символ из таблицы символов ASCII. Занимает 1 байт и интерпретируется как символ ASCII.

String — строковый тип данных, обычно представлен массивом объектов типа char. Обычно возможности современных языков позволяют совершать самые разнообразные действия над объектами типа string, например конкатенацию (склеивание), удаление строк, замену символов в строке.

Boolean — логический тип данных. Примитивный тип данных в информатике, выражающий 2 состояния. Очень полезен, когда в программе необходимо выразить только 2 состояния (например, написать функцию, которая бы возвращала только правду или ложь).

Приведение типов

Языки программирования позволяют «приводить» типы друг к другу. Например, инициализировав переменную типа integer, мы можем в дальнейшем привести ее к типу double, то есть разрешить компилятору перезаписать ее и обращаться с ней в дальнейшем как с числом с плавающей точкой.

Но не все типы данных возможно так просто преобразовывать. Например, мы никак не приведем string к integer, компилятор просто не поймет наших действий. Также есть частные случаи компиляторов и языков программирования. Например, в языке Pascal нельзя преобразовать тип integer к integer real, потому что только тип real поддерживает операцию деления.

В современных языках, таких как C#, нет таких проблем, чаще всего программист может безболезненно преобразовывать интуитивно похожие типы данных, такие как int. double, long int и так далее. Более того, в динамически типизируемых языках даже возможна ситуация, когда тип данных char приводится к int!

Это дозволено потому, что компилятор, вместо того, чтобы работать с символом, берет его порядковый номер из таблицы ASCII и уже его использует для взаимодействия с int. В языках со строгой типизацией, таких как C++ или C#, это, конечно же, невозможно.

Это основные типы данных в информатике. В современных языках программирования переменные часто представляют собой уже не просто выделенное место в оперативной памяти, а целые «объекты» или «классы», что сильно расширяет возможности операций с ними.

Чтобы понять, как хранятся такие сложные структуры, необходимо углубиться в такую неисчерпаемую тему, как объектно-ориентированное программирование, самый современный инструмент для создания мощных, расширяемых и поддерживаемых годами программ.

Справочник по C#. Целочисленные типы

  • Чтение занимает 2 мин

В этой статье

Целочисленные типы представляют целые числа.The integral numeric types represent integer numbers. Все целочисленные типы являются типами значений.All integral numeric types are value types. Они также представляют собой простые типы и могут быть инициализированы литералами.They are also simple types and can be initialized with literals. Все целочисленные типы поддерживают арифметические операторы, побитовые логические операторы, операторы сравнения и равенства.All integral numeric types support arithmetic, bitwise logical, comparison, and equality operators.

Характеристики целочисленных типовCharacteristics of the integral types

C# поддерживает следующие предварительно определенные целочисленные типы:C# supports the following predefined integral types:

Ключевое слово или тип C#C# type/keywordДиапазонRangeРазмерSizeТип .NET.NET type
sbyteОт -128 до 127-128 to 1278-разрядное целое число со знакомSigned 8-bit integerSystem.SByte
byteОт 0 до 2550 to 2558-разрядное целое число без знакаUnsigned 8-bit integerSystem.Byte
shortОт -32 768 до 32 767-32,768 to 32,76716-разрядное целое число со знакомSigned 16-bit integerSystem.Int16
ushortОт 0 до 65 5350 to 65,53516-разрядное целое число без знакаUnsigned 16-bit integerSystem.UInt16
intОт -2 147 483 648 до 2 147 483 647-2,147,483,648 to 2,147,483,64732-разрядное целое число со знакомSigned 32-bit integerSystem.Int32
uintОт 0 до 4 294 967 2950 to 4,294,967,29532-разрядное целое число без знакаUnsigned 32-bit integerSystem.UInt32
longОт -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807-9,223,372,036,854,775,808 to 9,223,372,036,854,775,80764-разрядное целое число со знакомSigned 64-bit integerSystem.Int64
ulongОт 0 до 18 446 744 073 709 551 6150 to 18,446,744,073,709,551,61564-разрядное целое число без знакаUnsigned 64-bit integerSystem.UInt64

В приведенной выше таблице каждый тип ключевого слова C# из крайнего левого столбца является псевдонимом для соответствующего типа .NET.In the preceding table, each C# type keyword from the leftmost column is an alias for the corresponding .NET type. Они взаимозаменяемые.They are interchangeable. Например, следующие объявления объявляют переменные одного типа:For example, the following declarations declare variables of the same type:

int a = 123;
System.Int32 b = 123;

По умолчанию все целочисленные типы имеют значение 0.The default value of each integral type is zero, 0. Все целочисленные типы имеют константы MinValue и MaxValue с минимальным и максимальными итоговыми значениями этого типа.Each of the integral types has the MinValue and MaxValue constants that provide the minimum and maximum value of that type.

Используйте структуру System.Numerics.BigInteger, чтобы представить целое число со знаком без верхней и нижней границ.Use the System.Numerics.BigInteger structure to represent a signed integer with no upper or lower bounds.

Целочисленные литералыInteger literals

Целочисленные литералы могут быть:Integer literals can be

  • десятичным числом: без префикса;decimal: without any prefix
  • шестнадцатеричным числом: с префиксом 0x или 0X;hexadecimal: with the 0x or 0X prefix
  • двоичными: с префиксом 0b или 0B (доступно в C# 7.0 и более поздних версиях).binary: with the 0b or 0B prefix (available in C# 7.0 and later)

В приведенном ниже коде показан пример каждого из них.The following code demonstrates an example of each:

var decimalLiteral = 42;
var hexLiteral = 0x2A;
var binaryLiteral = 0b_0010_1010;

В предыдущем примере также показано использование _ в качестве цифрового разделителя, который поддерживается, начиная с версии C# 7.0.The preceding example also shows the use of _ as a digit separator, which is supported starting with C# 7.0. Цифровой разделитель можно использовать со всеми видами числовых литералов.You can use the digit separator with all kinds of numeric literals.

Тип целочисленного литерала определяется его суффиксом следующим образом:The type of an integer literal is determined by its suffix as follows:

  • Если литерал не имеет суффикса, его типом будет первый из следующих типов, в котором может быть представлено его значение: int, uint, long, ulong.If the literal has no suffix, its type is the first of the following types in which its value can be represented: int, uint, long, ulong.

  • Если у литерала есть суффикс U или u, его типом будет первый из следующих типов, в котором может быть представлено его значение: uint, ulong.If the literal is suffixed by U or u, its type is the first of the following types in which its value can be represented: uint, ulong.

  • Если у литерала есть суффикс L или l, его типом будет первый из следующих типов, в котором может быть представлено его значение: long, ulong.If the literal is suffixed by L or l, its type is the first of the following types in which its value can be represented: long, ulong.

    Примечание

    Строчную букву l можно использовать в качестве суффикса.You can use the lowercase letter l as a suffix. Однако при этом выдается предупреждение компилятора, так как букву l можно перепутать с цифрой 1.However, this generates a compiler warning because the letter l can be confused with the digit 1. Для ясности используйте L.Use L for clarity.

  • Если у литерала есть суффикс UL, Ul, uL, ul, LU, Lu, lU или lu, его тип — ulong.If the literal is suffixed by UL, Ul, uL, ul, LU, Lu, lU, or lu, its type is ulong.

Если значение, представленное целочисленным литералом, превышает UInt64.MaxValue, происходит ошибка компиляции CS1021.If the value represented by an integer literal exceeds UInt64.MaxValue, a compiler error CS1021 occurs.

Если определенный тип целочисленного литерала — int, а значение, представленное литералом, находится в диапазоне целевого типа, значение можно неявно преобразовать в sbyte, byte, short, ushort, uint или ulong:If the determined type of an integer literal is int and the value represented by the literal is within the range of the destination type, the value can be implicitly converted to sbyte, byte, short, ushort, uint, or ulong:

byte a = 17;
byte b = 300;   // CS0031: Constant value '300' cannot be converted to a 'byte'

Как показано в предыдущем примере, если значение литерала выходит за пределы диапазона целевого типа, возникает ошибка компилятора CS0031.As the preceding example shows, if the literal’s value is not within the range of the destination type, a compiler error CS0031 occurs.

Можно также использовать приведение для преобразования значения, представленного целочисленным литералом, в тип, отличный от определенного типа литерала:You can also use a cast to convert the value represented by an integer literal to the type other than the determined type of the literal:

var signedByte = (sbyte)42;
var longVariable = (long)42;

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

Любой целочисленный тип можно преобразовать в любой другой целочисленный тип.You can convert any integral numeric type to any other integral numeric type. Если целевой тип может хранить все значения исходного типа, преобразование является неявным.If the destination type can store all values of the source type, the conversion is implicit. В противном случае необходимо использовать выражение приведения для выполнения явного преобразования.Otherwise, you need to use a cast expression to perform an explicit conversion. Для получения дополнительной информации см. статью Встроенные числовые преобразования.For more information, see Built-in numeric conversions.

Спецификация языка C#C# language specification

Дополнительные сведения см. в следующих разделах статьи Спецификация языка C#:For more information, see the following sections of the C# language specification:

См. такжеSee also

Числовые типы данных — Visual Basic

  • Чтение занимает 3 мин

В этой статье

Visual Basic предоставляет несколько числовых типов данных для обработки чисел в различных представлениях.Visual Basic supplies several numeric data types for handling numbers in various representations. Целочисленные типы представляют только целые числа (положительные, отрицательные и нулевые), а Нецелочисленные типы — числа с целой и дробной частями.Integral types represent only whole numbers (positive, negative, and zero), and nonintegral types represent numbers with both integer and fractional parts.

Для таблицы, показывающей параллельное сравнение типов данных Visual Basic, см. в разделе типы данных.For a table showing a side-by-side comparison of the Visual Basic data types, see Data Types.

Целочисленные типыIntegral Numeric Types

Целочисленные типы данных — это те, которые представляют только числа без дробных частей.Integral data types are those that represent only numbers without fractional parts.

Целочисленные типы данных со знаком имеют тип данных SByte (8-разрядный), короткий тип данных (16-разрядный), целочисленный тип данных (32 бит) и тип данных Long (64-бит).The signed integral data types are SByte Data Type (8-bit), Short Data Type (16-bit), Integer Data Type (32-bit), and Long Data Type (64-bit). Если переменная всегда хранит целые числа, а не дробные числа, объявите ее как один из этих типов.If a variable always stores integers rather than fractional numbers, declare it as one of these types.

Целочисленные типы без знака имеют тип данных Byte (8-разрядный), тип данных UShort (16-разрядный), тип данных UInteger (32 бит) и тип данных ULong (64-бит).The unsigned integral types are Byte Data Type (8-bit), UShort Data Type (16-bit), UInteger Data Type (32-bit), and ULong Data Type (64-bit). Если переменная содержит двоичные данные или данные неизвестной природы, объявите ее как один из этих типов.If a variable contains binary data, or data of unknown nature, declare it as one of these types.

ПроизводительностьPerformance

Арифметические операции выполняются быстрее с целочисленными типами, чем с другими типами данных.Arithmetic operations are faster with integral types than with other data types. Они работают быстрее с Integer типами и UInteger в Visual Basic.They are fastest with the Integer and UInteger types in Visual Basic.

Большие целые числаLarge Integers

Если необходимо хранить целое число, превышающее Integer тип данных, можно использовать Long тип данных.If you need to hold an integer larger than the Integer data type can hold, you can use the Long data type instead. Longпеременные могут содержать числа от-9223372036854775808 до 9 223 372 036 854 775 807.Long variables can hold numbers from -9,223,372,036,854,775,808 through 9,223,372,036,854,775,807. Операции с Long выполняются немного медленнее, чем в Integer .Operations with Long are slightly slower than with Integer.

Если вам нужны еще большие значения, можно использовать тип данных Decimal.If you need even larger values, you can use the Decimal Data Type. Можно хранить числа от-79,228,162,514,264,337,593,543,950,335 до 79,228,162,514,264,337,593,543,950,335 в переменной, Decimal если не используются десятичные разряды.You can hold numbers from -79,228,162,514,264,337,593,543,950,335 through 79,228,162,514,264,337,593,543,950,335 in a Decimal variable if you do not use any decimal places. Однако операции с Decimal числами выполняются значительно медленнее, чем с любым другим числовым типом данных.However, operations with Decimal numbers are considerably slower than with any other numeric data type.

Небольшие целые числаSmall Integers

Если не требуется полный диапазон Integer типа данных, можно использовать Short тип данных, который может содержать целые числа от-32 768 до 32 767.If you do not need the full range of the Integer data type, you can use the Short data type, which can hold integers from -32,768 through 32,767. Для наименьшего диапазона целых чисел SByte тип данных содержит целые числа от-128 до 127.For the smallest integer range, the SByte data type holds integers from -128 through 127. При наличии очень большого числа переменных, содержащих небольшие целые числа, среда CLR иногда может хранить Short SByte переменные и повысить эффективность использования памяти.If you have a very large number of variables that hold small integers, the common language runtime can sometimes store your Short and SByte variables more efficiently and save memory consumption. Однако операции с Short и SByte выполняются несколько медленнее, чем в Integer .However, operations with Short and SByte are somewhat slower than with Integer.

Целые числа без знакаUnsigned Integers

Если известно, что переменная никогда не должна содержать отрицательное число, можно использовать неподписанные типы Byte ,, UShort UInteger и ULong .If you know that your variable never needs to hold a negative number, you can use the unsigned typesByte, UShort, UInteger, and ULong. Каждый из этих типов данных может содержать положительное целое число в два раза больше, чем соответствующий знаковый тип ( SByte , Short , Integer и Long ).Each of these data types can hold a positive integer twice as large as its corresponding signed type (SByte, Short, Integer, and Long). С точки зрения производительности каждый тип без знака является точно таким же эффективным, как и соответствующий тип со знаком.In terms of performance, each unsigned type is exactly as efficient as its corresponding signed type. В частности, UInteger предоставляет общий доступ с Integer различием наиболее эффективным из всех простейших числовых типов данных.In particular, UInteger shares with Integer the distinction of being the most efficient of all the elementary numeric data types.

Нецелочисленные числовые типыNonintegral Numeric Types

Нецелочисленные типы данных — это значения, представляющие числа с целой и дробной частями.Nonintegral data types are those that represent numbers with both integer and fractional parts.

Нецелочисленные числовые типы данных: Decimal (128-разрядная Фиксированная точка), один тип данных (32-разрядная с плавающей запятой) и тип данных double (64-разрядный с плавающей запятой).The nonintegral numeric data types are Decimal (128-bit fixed point), Single Data Type (32-bit floating point), and Double Data Type (64-bit floating point). Все типы со знаком.They are all signed types. Если переменная может содержать дробную часть, объявите ее как один из этих типов.If a variable can contain a fraction, declare it as one of these types.

Decimalне является типом данных с плавающей запятой.Decimal is not a floating-point data type. Decimalчисла имеют двоичное целочисленное значение и коэффициент масштабирования целого числа, который указывает, какая часть значения является десятичной дробью.Decimal numbers have a binary integer value and an integer scaling factor that specifies what portion of the value is a decimal fraction.

Вы можете использовать Decimal переменные для денежных значений.You can use Decimal variables for money values. Преимущество — точность значений.The advantage is the precision of the values. DoubleТип данных является более быстрым и требует меньше памяти, но он подвергается ошибкам округления.The Double data type is faster and requires less memory, but it is subject to rounding errors. DecimalТип данных сохраняет полную точность до 28 десятичных разрядов.The Decimal data type retains complete accuracy to 28 decimal places.

Числа с плавающей запятой ( Single и Double ) имеют большие диапазоны, чем Decimal числа, но могут подвергаться ошибкам округления.Floating-point (Single and Double) numbers have larger ranges than Decimal numbers but can be subject to rounding errors. Типы с плавающей запятой поддерживают меньше значащих цифр Decimal , чем, но могут представлять значения большей величины.Floating-point types support fewer significant digits than Decimal but can represent values of greater magnitude.

Нецелочисленные числовые значения можно выразить как Мммии, в котором MMM является мантиссаом (значащими цифрами), а ие — экспонентой (степенью 10).Nonintegral number values can be expressed as mmmEeee, in which mmm is the mantissa (the significant digits) and eee is the exponent (a power of 10). Самыми высокими положительными значениями нецелочисленных типов являются 7.9228162514264337593543950335 E + 28 для Decimal , 4028235E e + 38 для Single и 1.79769313486231570 e + 308 для Double .The highest positive values of the nonintegral types are 7.9228162514264337593543950335E+28 for Decimal, 3.4028235E+38 for Single, and 1.79769313486231570E+308 for Double.

ПроизводительностьPerformance

Doubleявляется наиболее эффективным из типов данных дробной части, так как процессоры на текущих платформах выполняют операции с плавающей запятой с двойной точностью.Double is the most efficient of the fractional data types, because the processors on current platforms perform floating-point operations in double precision. Однако операции с Double не так быстро, как с целочисленными типами, такими как Integer .However, operations with Double are not as fast as with the integral types such as Integer.

Небольшие величиныSmall Magnitudes

Для чисел с наименьшей возможной величиной (ближайшее к 0) Double переменные могут содержать цифры как небольшие, например, 4.94065645841246544 e-324 для отрицательных значений и 4.94065645841246544 e-324 для положительных значений.For numbers with the smallest possible magnitude (closest to 0), Double variables can hold numbers as small as -4.94065645841246544E-324 for negative values and 4.94065645841246544E-324 for positive values.

Небольшие дробные числаSmall Fractional Numbers

Если не требуется полный диапазон Double типа данных, можно использовать Single тип данных, который может содержать числа с плавающей запятой в диапазоне от-4028235E e + 38 до 4028235E e + 38.If you do not need the full range of the Double data type, you can use the Single data type, which can hold floating-point numbers from -3.4028235E+38 through 3.4028235E+38. Наименьшими значениями для Single переменных являются-1.401298 e-45 для отрицательных значений и 1.401298 e-45 для положительных значений.The smallest magnitudes for Single variables are -1.401298E-45 for negative values and 1.401298E-45 for positive values. При наличии очень большого числа переменных, содержащих небольшие числа с плавающей запятой, среда CLR иногда может Single более эффективно хранить переменные и экономить потребление памяти.If you have a very large number of variables that hold small floating-point numbers, the common language runtime can sometimes store your Single variables more efficiently and save memory consumption.

См. также разделSee also

Целочисленный тип данных

— Visual Basic

  • 3 минуты, чтобы прочитать

В этой статье

Содержит 32-разрядные (4-байтовые) целые числа со знаком, значения которых варьируются от -2 147 483 648 до 2 147 483 647.

Замечания

Тип данных Integer обеспечивает оптимальную производительность на 32-разрядном процессоре. Другие интегральные типы медленнее загружать и хранить из памяти и в память.

Значение по умолчанию Integer равно 0.

Буквальные задания

Вы можете объявить и инициализировать переменную Integer , присвоив ей десятичный литерал, шестнадцатеричный литерал, восьмеричный литерал или (начиная с Visual Basic 2017) двоичный литерал.Если целочисленный литерал находится вне диапазона Integer (то есть, если он меньше Int32.MinValue или больше Int32.MaxValue, возникает ошибка компиляции.

В следующем примере целым числам присваиваются целые числа, равные 90 946, которые представлены в виде десятичных, шестнадцатеричных и двоичных литералов.

  Dim intValue1 As Integer = 90946
ЕЫпе (intValue1)
Dim intValue2 As Integer = & h26342
ЕЫпе (intValue2)

Dim intValue3 As Integer = & B0001_0110_0011_0100_0010
Приставка.ЕЫпе (intValue3)
'В примере показан следующий вывод:
90946
90946
90946
  

Примечание

Вы используете префикс & h или & H для обозначения шестнадцатеричного литерала, префикс & b или & B для обозначения двоичного литерала и префикс и o или & O для обозначения восьмеричного литерала. Десятичные литералы не имеют префикса.

Начиная с Visual Basic 2017, вы также можете использовать символ подчеркивания _ в качестве разделителя цифр для улучшения читабельности, как показано в следующем примере.

  Dim intValue1 As Integer = 90_946
ЕЫпе (intValue1)

Dim intValue2 As Integer = & H0001_6342
ЕЫпе (intValue2)

Dim intValue3 As Integer = & B0001_0110_0011_0100_0010
ЕЫпе (intValue3)
'В примере показан следующий вывод:
90946
90946
90946
  

Начиная с Visual Basic 15.5, вы также можете использовать символ подчеркивания ( _ ) в качестве ведущего разделителя между префиксом и шестнадцатеричной, двоичной или восьмеричной цифрами.Например:

  Тусклое число как целое число = & H_C305_F860
  

Чтобы использовать символ подчеркивания в качестве ведущего разделителя, необходимо добавить следующий элемент в файл проекта Visual Basic (* .vbproj):

  
   15.5 

  

Для получения дополнительной информации см. Настройку языковой версии Visual Basic.

Числовые литералы

также могут включать символ типа I для обозначения типа данных Integer , как показано в следующем примере.

  Тусклый номер = & H_035826I
  

Советы по программированию

  • Соображения о взаимодействии. Если вы взаимодействуете с компонентами, не написанными для .NET Framework, такими как объекты автоматизации или COM, помните, что Integer имеет другую ширину данных (16 бит) в других средах. Если вы передаете 16-битный аргумент такому компоненту, объявите его как Short вместо Integer в вашем новом коде Visual Basic.

  • Расширение. Тип данных Integer расширяется до Long , Decimal , Single или Double . Это означает, что вы можете конвертировать Integer в любой из этих типов без возникновения ошибки System.OverflowException.

  • Тип символов. При добавлении буквального типа 9009 I к литералу его переводят в тип данных Integer . При добавлении идентификатора типа символа % к любому идентификатору устанавливается значение Integer .

  • Тип рамы. Соответствующим типом в .NET Framework является структура System.Int32.

Диапазон

Если вы попытаетесь установить переменную целочисленного типа в число вне диапазона для этого типа, произойдет ошибка. Если вы попытаетесь установить его в дроби, число округляется в большую или меньшую сторону до ближайшего целого числа. Если число одинаково близко к двум целочисленным значениям, значение округляется до ближайшего четного целого числа. Такое поведение сводит к минимуму ошибки округления, возникающие в результате последовательного округления значения средней точки в одном направлении.Следующий код показывает примеры округления.

  'Допустимый диапазон целочисленной переменной: от -2147483648 до +2147483647.
Dim K As Integer
«Следующее утверждение вызывает ошибку, поскольку значение слишком велико.
k = 2147483648
«Следующее утверждение устанавливает k в 6.
к = 5,9
«Следующее утверждение устанавливает к 4
к = 4,5
«Следующее утверждение устанавливает к 6
'Примечание: Visual Basic использует округление банкира (до ближайшего четного числа)
к = 5,5
  

См. Также

,

Интегральные числовые типы — C # ссылка

  • 3 минуты, чтобы прочитать

В этой статье

Целочисленные числовые типы представляют собой целые числа.Все целочисленные числовые типы являются типами значений. Они также являются простыми типами и могут быть инициализированы литералами. Все целочисленные числовые типы поддерживают арифметические, побитовые логические операторы, операторы сравнения и равенства.

Характеристики целочисленных типов

C # поддерживает следующие предопределенные целочисленные типы:

Система От Система
C # тип / ключевое слово Диапазон Размер. NET тип
сбайт -128 до 127 8-разрядное целое число со знаком.SByte
байт от 0 до 255 8-разрядное целое число без знака System.Byte
короткие до 32 768 до 32 767 16-разрядное целое число со знаком System.Int16
ushort от 0 до 65 535 16-разрядное целое число без знака System.UInt16
и -2 147 483 648 до 2 147 483 647 32-разрядное целое число со знаком.Int32
уинт от 0 до 4 294 967 295 32-разрядное целое число без знака System.UInt32
длиной -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 64-разрядное целое число со знаком System.Int64
ulong от 0 до 18 446 744 073 709 551 615 64-разрядное целое число без знака System.UInt64

В предыдущей таблице каждое ключевое слово типа C # из крайнего левого столбца является псевдонимом для соответствующего.Чистый тип. Они взаимозаменяемы. Например, следующие объявления объявляют переменные одного типа:

  int a = 123;
System.Int32 b = 123;
  

Значением по умолчанию для каждого целочисленного типа является ноль, 0 . Каждый из целочисленных типов имеет константы MinValue и MaxValue , которые обеспечивают минимальное и максимальное значение этого типа.

Используйте структуру System.Numerics.BigInteger для представления целого числа со знаком без верхних или нижних границ.

целочисленных литералов

Целочисленные литералы могут быть

  • десятичный : без префикса
  • шестнадцатеричный : с префиксом 0x или 0X
  • двоичный : с префиксом 0b или 0B (доступно в C # 7.0 и более поздних версиях)

Следующий код демонстрирует пример каждого:

  var decimalLiteral = 42;
var hexLiteral = 0x2A;
var binaryLiteral = 0b_0010_1010;
  

В предыдущем примере также показано использование _ в качестве -разрядного разделителя , который поддерживается начиная с C # 7.0. Вы можете использовать разделитель цифр со всеми видами числовых литералов.

Тип целочисленного литерала определяется его суффиксом следующим образом:

  • Если у литерала нет суффикса, его тип является первым из следующих типов, в которых может быть представлено его значение: , , , , , , и .

  • Если к литералу добавляется U или u , его тип является первым из следующих типов, в которых может быть представлено его значение: uint , ulong .

  • Если к литералу добавляется L или l , его тип является первым из следующих типов, в которых его значение может быть представлено: длиной , ulong .

    Примечание

    В качестве суффикса можно использовать строчную букву l . Однако это создает предупреждение компилятора, поскольку буква l может быть перепутана с цифрой 1 . Используйте L для ясности.

  • Если к литералу добавляется UL , UL , UL , ul , LU , Lu , lU или lu , его тип равен ulong .

Если значение, представленное целочисленным литералом, превышает UInt64.MaxValue, возникает ошибка компилятора CS1021.

Если определенный тип целочисленного литерала равен или , а значение, представленное литералом, находится в диапазоне типа назначения, это значение может быть неявно преобразовано в байта , байта , короткого , ushort , и или и :

  байт а = 17;
байт b = 300; // CS0031: постоянное значение «300» не может быть преобразовано в «байт»
  

Как показывает предыдущий пример, если значение литерала находится за пределами диапазона целевого типа, возникает ошибка компилятора CS0031.

Можно также использовать приведение для преобразования значения, представленного целочисленным литералом, в тип, отличный от определенного типа литерала:

  var signatureByte = (sbyte) 42;
var longVariable = (long) 42;
  

преобразования

Вы можете преобразовать любой целочисленный числовой тип в любой другой целочисленный числовой тип. Если тип назначения может хранить все значения типа источника, преобразование является неявным. В противном случае вам нужно использовать выражение приведения, чтобы выполнить явное преобразование.Для получения дополнительной информации см. Встроенные числовые преобразования.

C # языковая спецификация

Для получения дополнительной информации см. Следующие разделы спецификации языка C #:

См. Также

,Перечисления

— Целочисленные типы — Типы данных — Основы языка

Данные типа enum принадлежат некоторому ограниченному набору данных. Определение типа перечисления:

enum имя перечислимого типа
{
список значений
};

Список значений — это список идентификаторов именованных констант, разделенных запятыми.

Пример:

перечисление месяцев // перечисление именованных констант
{
Январь

февраля
марта
апреля
мая Июнь

июля Август
Сентябрь

октября Ноябрь
Декабрь
};

После объявления перечисления появляется новый целочисленный 4-байтовый тип данных.Объявление нового типа данных позволяет компилятору строго контролировать типы передаваемых параметров, потому что перечисление вводит новые именованные константы. В приведенном выше примере именованная константа в январе имеет значение 0, февраль — 1, декабрь — 11.

Правило

: если определенное значение не назначено именованной константе, которая является членом перечисления, ее новое значение будет сформировано автоматически. Если это первый член перечисления, ему будет присвоено значение 0. Для всех последующих членов значения будут рассчитываться на основе значений предыдущих членов путем добавления одного.

Пример:

перечислимые интервалы // Перечисление именованных констант
{
month = 1, // Интервал одного месяца
two_months, // Два месяца
квартал // Три месяца — квартал
полугодие = 6, // полгода
год = 12, // год — 12 месяцев
};

Примечания

  • В отличие от C ++, размер внутреннего представления перечислимого типа в MQL4 всегда равен 4 байта.То есть sizeof (months) возвращает значение 4.
  • В отличие от C ++, анонимное перечисление не может быть объявлено в MQL4. То есть уникальное имя должно всегда указываться после ключевого слова enum.

См. Также

Typecasting


,

Типы данных

Одной из основных функций программы OCI является связь с базой данных Oracle.

Приложение OCI может извлекать данные из таблиц базы данных с помощью запросов SQL SELECT или изменять существующие данные в таблицах с помощью операторов INSERT , UPDATE или DELETE .

Внутри базы данных значения хранятся в виде столбцов в таблицах.Внутренне Oracle представляет данные в определенных форматах, известных как внутренние типы данных. Примеры внутренних типов данных включают NUMBER , CHAR и DATE (см. Таблицу 5-1).

Как правило, приложения OCI работают не с внутренними представлениями типов данных, а с типами данных на основном языке, которые предопределены языком, на котором они написаны. Когда данные передаются между клиентским приложением OCI и таблицей базы данных, библиотеки OCI преобразуют данные между внутренними типами данных и внешними типами данных.

Внешние типы данных являются типами основного языка, которые были определены в заголовочных файлах OCI. Когда приложение OCI связывает входные переменные, один из параметров связывания является указанием кода внешнего типа данных (или кода SQLT) переменной. Точно так же, когда выходные переменные указаны в вызове define, необходимо указать внешнее представление извлеченных данных.

В некоторых случаях внешние типы данных аналогичны внутренним типам.Внешние типы обеспечивают программисту удобство, позволяя работать с типами основного языка вместо проприетарных форматов данных.

Примечание:

Несмотря на то, что некоторые внешние типы похожи на внутренние, приложение OCI никогда не привязывается к внутренним типам данных. Они обсуждаются здесь, потому что может быть полезно понять, как внутренние типы могут отображаться на внешние типы.

OCI может выполнять широкий спектр преобразований типов данных при передаче данных между базой данных Oracle и приложением OCI.Существует больше внешних типов данных OCI, чем внутренних типов данных Oracle. В некоторых случаях один внешний тип отображается на внутренний тип; в других случаях несколько внешних типов отображаются на один внутренний тип.

Отображения «многие к одному» для некоторых типов данных обеспечивают гибкость для программиста OCI. Например, предположим, что вы обрабатываете следующую инструкцию SQL:

 SELECT sal FROM emp WHERE empno =: employee_number
 

Требуется, чтобы зарплата возвращалась в виде символьных данных, а не в двоичном формате с плавающей запятой.Поэтому вы задаете тип данных внешней строки базы данных Oracle, такой как VARCHAR2 (код = 1) или CHAR (код = 96) для параметра dty в OCIDefineByPos () или OCIDefineByPos2 () позвоните по Sal столбца. Вы также должны объявить строковую переменную в своей программе и указать ее адрес в параметре valuep . См. Таблицу 5-2 для получения дополнительной информации.

Однако, если вы хотите, чтобы информация о зарплате возвращалась в виде двоичного значения с плавающей запятой, укажите внешний тип данных FLOAT (код = 4).Вы также должны определить переменную соответствующего типа для параметра valuep .

Oracle Database выполняет большинство преобразований данных прозрачно. Возможность указать практически любой внешний тип данных обеспечивает большую мощность для выполнения специализированных задач. Например, вы можете вводить и выводить значения ДАТА в чистом двоичном формате без преобразования символов, используя внешний тип данных ДАТА .

Для управления преобразованием данных необходимо использовать соответствующие коды внешних типов данных в привязке и определить подпрограммы.Вы должны указать Oracle Database, где находятся входные или выходные переменные в вашей программе OCI, а также их типы данных и длины.

OCI также поддерживает дополнительный набор типов типов OCI, которые используются системой управления типами Oracle Database для представления типов данных атрибутов типов объектов. Вы можете использовать набор предопределенных констант для представления этих типов. Каждая из констант содержит префикс OCI_TYPECODE .

Итак, программист OCI должен знать о следующих различных типах данных или представлениях данных:

  • Внутренние типы данных Oracle, которые используются столбцами таблицы в базе данных Oracle.К ним также относятся типы данных, используемые PL / SQL, которые не используются столбцами базы данных Oracle (например, индексированная таблица, логическое значение, запись).

  • Внешние типы данных OCI, которые используются для указания представлений на языке хоста данных Oracle.

  • OCI_TYPECODE значений, которые используются Oracle Database для представления информации о типе для атрибутов типа объекта.

Информация о внутреннем типе данных столбца передается вашему приложению в виде кода внутреннего типа данных. С помощью этой информации о том, какой тип данных должен быть возвращен, ваше приложение может определить, как преобразовать и отформатировать выходные данные. Коды внутренних типов данных Oracle перечислены в разделе «Внутренние типы данных».

,
Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *