Тип данных 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.
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
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 thatInteger
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 asShort
instead ofInteger
in your new Visual Basic code.Расширяющие.Widening. Тип данных
Integer
можно расширить доLong
,Decimal
,Single
илиDouble
.TheInteger
data type widens toLong
,Decimal
,Single
, orDouble
. Это означает, что типInteger
можно преобразовать в любой из этих типов без возникновения ошибки System.OverflowException.This means you can convertInteger
to any one of these types without encountering a System.OverflowException error.Символы типа.Type Characters. При добавлении к литералу символа типа литерала
I
производится принудительное приведение литерала к типу данных
.Appending the literal type character IntegerI
to a literal forces it to theInteger
data type. При добавлении символа идентификатора типа%
к любому идентификатору производится принудительное приведение этого идентификатора к типуInteger
.Appending the identifier type character%
to any identifier forces it toInteger
.Тип 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
Обновл. 9 Июл 2020 |
На этом уроке мы рассмотрим целочисленные типы данных, их диапазоны значений, операцию деления, а также переполнение: что это такое и примеры.
Целочисленные типы данных
Целочисленный тип данных — это тип, переменные которого могут содержать только целые числа (без дробной части, например: -2, -1, 0, 1, 2). В языке C++ есть 5 основных целочисленных типов, доступных для использования:
Категория | Тип | Минимальный размер |
Символьный тип данных | char | 1 байт |
Целочисленный тип данных | short | 2 байта |
int | 2 байта (но чаще всего 4 байта) | |
long | 4 байта | |
long long | 8 байт |
Примечание: Тип 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 int
, long int
и long long int
могут использоваться, их сокращенные версии (без int
) более предпочтительны для использования. К тому же постоянное добавление int
затрудняет чтение кода (легко перепутать с именем переменной).
Диапазоны значений и знак целочисленных типов данных
Как вы уже знаете из предыдущего урока, переменная с n-ным количеством бит может хранить 2n возможных значений. Но что это за значения? Это значения, которые находятся в диапазоне. Диапазон — это значения от и до, которые может хранить определенный тип данных. Диапазон целочисленной переменной определяется двумя факторами: её размером (измеряется в битах) и её знаком (который может быть 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?
Категория | Тип | По умолчанию |
Символьный тип данных | char | signed или unsigned (в большинстве случаев signed) |
Целочисленный тип данных | short | signed |
int | signed | |
long | signed | |
long long | signed |
Все целочисленные типы данных, кроме char, являются signed по умолчанию. Тип char может быть как signed, так и unsigned (но, обычно, signed).
В большинстве случаев ключевое слово signed не пишется (оно и так используется по умолчанию).
Программисты, как правило, избегают использования целочисленных типов unsigned, если в этом нет особой надобности, так как с переменными unsigned ошибок, по статистике, возникает больше, нежели с переменными signed.
Правило: Используйте целочисленные типы signed, вместо unsigned.
Переполнение
Вопрос: «Что произойдет, если мы попытаемся использовать значение, которое находится вне диапазона значений определенного типа данных?». Ответ: «Переполнение».
Переполнение (англ. «overflow») случается при потере бит из-за того, что переменной не было выделено достаточно памяти для их хранения.
На уроке №28 мы говорили о том, что данные хранятся в бинарном (двоичном) формате и каждый бит может иметь только 2 возможных значения (0
или 1
). Вот как выглядит диапазон чисел от 0 до 15 в десятичной и двоичной системах:
Десятичная система | Двоичная система |
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
11 | 1011 |
12 | 1100 |
13 | 1101 |
14 | 1110 |
15 | 1111 |
Как вы можете видеть, чем больше число, тем больше ему требуется бит. Поскольку наши переменные имеют фиксированный размер, то на них накладываются ограничения на количество данных, которые они могут хранить.
Примеры переполнения
Рассмотрим переменную unsigned, которая состоит из 4-х бит. Любое из двоичных чисел, перечисленных в таблице выше, поместится внутри этой переменной.
«Но что произойдет, если мы попытаемся присвоить значение, которое занимает больше 4-х бит?». Правильно! Переполнение. Наша переменная будет хранить только 4 наименее значимых (те, что справа) бита, все остальные — потеряются.
Например, если мы попытаемся поместить число 21 в нашу 4-битную переменную:
Десятичная система | Двоичная система |
21 | 10101 |
Число 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…127 | 1 |
integer | -32 768…32 767 | 2 |
longint | -2 147 483 648…2 147 483 647 | 4 |
byte | 0…255 | 1 |
word | 0…65 535 | 2 |
Переменные целого типа могут принимать только целые значения. Такие переменные в программе описываются следующим образом:
Здесь 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 127 | 8-разрядное целое число со знакомSigned 8-bit integer | System.SByte |
byte | От 0 до 2550 to 255 | 8-разрядное целое число без знакаUnsigned 8-bit integer | System.Byte |
short | От -32 768 до 32 767-32,768 to 32,767 | 16-разрядное целое число со знакомSigned 16-bit integer | System.Int16 |
ushort | От 0 до 65 5350 to 65,535 | 16-разрядное целое число без знакаUnsigned 16-bit integer | System.UInt16 |
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 |
uint | От 0 до 4 294 967 2950 to 4,294,967,295 | 32-разрядное целое число без знакаUnsigned 32-bit integer | System.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,807 | 64-разрядное целое число со знакомSigned 64-bit integer | System.Int64 |
ulong | От 0 до 18 446 744 073 709 551 6150 to 18,446,744,073,709,551,615 | 64-разрядное целое число без знакаUnsigned 64-bit integer | System.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 the0x
or0X
prefix - двоичными: с префиксом
0b
или0B
(доступно в C# 7.0 и более поздних версиях).binary: with the0b
or0B
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 byU
oru
, 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 byL
orl
, its type is the first of the following types in which its value can be represented:long
,ulong
.Примечание
Строчную букву
l
можно использовать в качестве суффикса.You can use the lowercase letterl
as a suffix. Однако при этом выдается предупреждение компилятора, так как буквуl
можно перепутать с цифрой1
.However, this generates a compiler warning because the letterl
can be confused with the digit1
. Для ясности используйтеL
.UseL
for clarity.Если у литерала есть суффикс
UL
,Ul
,uL
,ul
,LU
,Lu
,lU
илиlu
, его тип —ulong
.If the literal is suffixed byUL
,Ul
,uL
,ul
,LU
,Lu
,lU
, orlu
, its type isulong
.
Если значение, представленное целочисленным литералом, превышает 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 LangVersion>
PropertyGroup>
Для получения дополнительной информации см. Настройку языковой версии 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. Для всех последующих членов значения будут рассчитываться на основе значений предыдущих членов путем добавления одного.
Пример:
перечислимые интервалы // Перечисление именованных констант |
Примечания
- В отличие от 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 перечислены в разделе «Внутренние типы данных».
,