Long тип: Типы char, short, int и long — Целые типы — Типы данных — Основы языка
Содержание
Размер типов данных в C++ / Ravesli
Обновл. 11 Сен 2021 |
Как мы уже знаем из урока №28, память на современных компьютерах, как правило, организована в блоки, которые состоят из байтов, причем каждый блок имеет свой уникальный адрес. До этого момента, память можно было сравнивать с почтовыми ящиками (с теми, которые находятся в каждом подъезде), куда мы можем поместить информацию и откуда мы её можем извлечь, а имена переменных — это всего лишь номера этих почтовых ящиков.
Тем не менее, эта аналогия не совсем подходит к программированию, так как переменные могут занимать больше 1 байта памяти. Следовательно, одна переменная может использовать 2, 4 или даже 8 последовательных адресов. Объем памяти, который использует переменная, зависит от типа данных этой переменной. Так как мы, как правило, получаем доступ к памяти через имена переменных, а не через адреса памяти, то компилятор может скрывать от нас все детали работы с переменными разных размеров.
Есть несколько причин по которым полезно знать, сколько памяти занимает определенная переменная/тип данных.
Во-первых, чем больше она занимает, тем больше информации сможет хранить. Так как каждый бит содержит либо 0
, либо 1
, то 1 бит может иметь 2 возможных значения.
2 бита могут иметь 4 возможных значения:
бит 0 | бит 1 |
0 | 0 |
0 | 1 |
1 | 0 |
1 | 1 |
3 бита могут иметь 8 возможных значений:
бит 0 | бит 1 | бит 2 |
0 | 0 | 0 |
0 | 0 | 1 |
0 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 0 |
1 | 0 | 1 |
1 | 1 | 0 |
1 | 1 | 1 |
По сути, переменная с n-ным количеством бит может иметь 2n возможных значений. Поскольку байт состоит из 8 бит, то он может иметь 28 (256) возможных значений.
Размер переменной накладывает ограничения на количество информации, которую она может хранить. Следовательно, переменные, которые используют больше байт, могут хранить более широкий диапазон значений.
Во-вторых, компьютеры имеют ограниченное количество свободной памяти. Каждый раз, когда мы объявляем переменную, небольшая часть этой свободной памяти выделяется до тех пор, пока переменная существует. Поскольку современные компьютеры имеют много памяти, то в большинстве случаев это не является проблемой, особенно когда в программе всего лишь несколько переменных. Тем не менее, для программ с большим количеством переменных (например, 100 000), разница между использованием 1-байтовых или 8-байтовых переменных может быть значительной.
Размер основных типов данных в C++
Возникает вопрос: «Сколько памяти занимают переменные разных типов данных?». Вы можете удивиться, но размер переменной с любым типом данных зависит от компилятора и/или архитектуры компьютера!
Язык C++ гарантирует только их минимальный размер:
Тип | Минимальный размер | |
Логический тип данных | bool | 1 байт |
Символьный тип данных | char | 1 байт |
wchar_t | 1 байт | |
char16_t | 2 байта | |
char32_t | 4 байта | |
Целочисленный тип данных | short | 2 байта |
int | 2 байта | |
long | 4 байта | |
long long | 8 байт | |
Тип данных с плавающей запятой | float | 4 байта |
double | 8 байт | |
long double | 8 байт |
Фактический размер переменных может отличаться на разных компьютерах, поэтому для его определения используют оператор sizeof.
Оператор sizeof — это унарный оператор, который вычисляет и возвращает размер определенной переменной или определенного типа данных в байтах. Вы можете скомпилировать и запустить следующую программу, чтобы выяснить, сколько занимают разные типы данных на вашем компьютере:
#include <iostream>
int main()
{
std::cout << «bool:\t\t» << sizeof(bool) << » bytes» << std::endl;
std::cout << «char:\t\t» << sizeof(char) << » bytes» << std::endl;
std::cout << «wchar_t:\t» << sizeof(wchar_t) << » bytes» << std::endl;
std::cout << «char16_t:\t» << sizeof(char16_t) << » bytes» << std::endl;
std::cout << «char32_t:\t» << sizeof(char32_t) << » bytes» << std::endl;
std::cout << «short:\t\t» << sizeof(short) << » bytes» << std::endl;
std::cout << «int:\t\t» << sizeof(int) << » bytes» << std::endl;
std::cout << «long:\t\t» << sizeof(long) << » bytes» << std::endl;
std::cout << «long long:\t» << sizeof(long long) << » bytes» << std::endl;
std::cout << «float:\t\t» << sizeof(float) << » bytes» << std::endl;
std::cout << «double:\t\t» << sizeof(double) << » bytes» << std::endl;
std::cout << «long double:\t» << sizeof(long double) << » bytes» << std::endl;
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> int main() { std::cout << «bool:\t\t» << sizeof(bool) << » bytes» << std::endl; std::cout << «char:\t\t» << sizeof(char) << » bytes» << std::endl; std::cout << «wchar_t:\t» << sizeof(wchar_t) << » bytes» << std::endl; std::cout << «char16_t:\t» << sizeof(char16_t) << » bytes» << std::endl; std::cout << «char32_t:\t» << sizeof(char32_t) << » bytes» << std::endl; std::cout << «short:\t\t» << sizeof(short) << » bytes» << std::endl; std::cout << «int:\t\t» << sizeof(int) << » bytes» << std::endl; std::cout << «long:\t\t» << sizeof(long) << » bytes» << std::endl; std::cout << «long long:\t» << sizeof(long long) << » bytes» << std::endl; std::cout << «float:\t\t» << sizeof(float) << » bytes» << std::endl; std::cout << «double:\t\t» << sizeof(double) << » bytes» << std::endl; std::cout << «long double:\t» << sizeof(long double) << » bytes» << std::endl; return 0; } |
Вот результат, полученный на моем компьютере:
bool: 1 bytes
char: 1 bytes
wchar_t: 2 bytes
char16_t: 2 bytes
char32_t: 4 bytes
short: 2 bytes
int: 4 bytes
long: 4 bytes
long long: 8 bytes
float: 4 bytes
double: 8 bytes
long double: 8 bytes
Ваши результаты могут отличаться, если у вас другая архитектура, или другой компилятор. Обратите внимание, оператор sizeof не используется с типом void, так как последний не имеет размера.
Если вам интересно, что значит \t
в коде, приведенном выше, то это специальный символ, который используется вместо клавиши TAB. Мы его использовали для выравнивания столбцов.
Интересно то, что sizeof — это один из трех операторов в языке C++, который является словом, а не символом (еще есть new и delete).
Вы также можете использовать оператор sizeof и с переменными:
#include <iostream>
int main()
{
int x;
std::cout << «x is » << sizeof(x) << » bytes» << std::endl;
}
#include <iostream>
int main() { int x; std::cout << «x is » << sizeof(x) << » bytes» << std::endl; } |
Результат выполнения программы:
x is 4 bytes
Оценить статью:
Загрузка…
Поделиться в социальных сетях:
c — Зачем нужен тип long когда есть int?
Процессоры развивались постепенно все более расширяя емкость регистров. Например, ранее в DOS
тип int
соответствовал 16 разрядному целочисленному значению, так как на IBM-совместимых компьютеров регистры были 16-разрядными. Например, регистр AX
является 16 разрядным, а его подрегистры AL
и AH
имели разрядность равную 8 битам. До этого вообще регистры процессоров были 8 разрядными.
Если выполнить, допустим, умножение двух объектов 16-разрядного типа int
, то для хранения результата нужно использовать два регистра как, например, регистры AX
и DX
. Для этого результата уже нужно вводить новый целочисленный тип. И такой тип был введен. Это тип long
.
Затем появились 64-разрядные процессоры. Необходимо различать 16-разрядные целые числа, 32-разрядные целые числа и 64- разрядные целые числа. Поэтому был введен дополнительный целый тип Long long
. Имейте в виду, что нужно было сохранять обратную совместимость с целыми типами, введенными ранее для процессоров с меньшей разрядностью.
Поэтому в стандарте C принято, что
sizeof( short ) <= sizeof( int )
sizeof( int ) <= sizeof( long )
sizeof( long ) <= sizeof( long long )
У разработчиков компиляторов есть свобода выбора, какая разрядность будет у типа long
и других целочисленных типов. Например, разрядность типа long
может составлять не `32 бита, а 64 бита.
Чтобы программы были переносимы, возникла необходимость вводить новые типы со строго указанной разрядностью такие, как, например, int_least32_t или int32_t.
На одних 64-битовых платформах тип long
и тип long long
могут иметь 64-битовуж разрядность. На других 64-битовых платформах тип long
может быть 32-битовым и тип int
также может быть 32-битовым, а тип long long
— 64 битовым.
Тем не менее ранг типа long long
больше ранга типа long
, а тип long
в свою очередь имеет ранг выше, чем тип int
.
На этом основываются правила преобразования типов в выражениях. Например, если тип long
и тип int
имеют разрядность равную 32 битам, то в следующем фрагменте кода
long x = 0;
unsigned int y = 0;
x + y;
тип выражения x + y
имеет тип unsigned long
.
В связи с этим имеются некоторые курьезы, связанные с такими преобразованиями особенно при выборе перегруженной функции в C++.
Один из таких примеров описан в следующей теме, где ближе к ее концу (можно быстро найти это сообщение по ключевому слову int64_t
) описывается один из таких курьезов, связанных с вызовом перегруженной функции, у которой параметр имеет тип std::int64_t
, который, как оказалось, является не алиасом типа long long int
, а алиасом типа long int
, который на данной платформе является 64-битовым.
В чем разница между «long», «long long», «long int» и «long long int» в C ++?
long
и long int
идентичны. Так long long
и есть long long int
. В обоих случаях int
опционально.
Что касается различия между двумя наборами, стандарт C ++ предписывает минимальные диапазоны для каждого, и это long long
, по крайней мере, так же широко, как long
.
Контролирующие части стандарта (C ++ 11, но это было давно), например 3.9.1 Fundamental types
, раздел 2 (в следующем разделе приведены аналогичные правила для целых типов без знака):
Существует пять стандартных целочисленных типов со знаком: char со знаком, short int, int, long int и long long int. В этом списке каждый тип обеспечивает как минимум столько же памяти, сколько предшествует ему в списке.
Также есть таблица 9 7.1.6.2 Simple type specifiers
, которая показывает «сопоставления» спецификаторов с реальными типами (показывая, что int
это необязательно), раздел которых показан ниже:
Specifier(s) Type
------------- -------------
long long int long long int
long long long long int
long int long int
long long int
Обратите внимание на различие между спецификатором и типом. Спецификатор — это то, как вы сообщаете компилятору, что это за тип, но вы можете использовать разные спецификаторы, чтобы получить один и тот же тип.
Следовательно, сам long
по себе не является ни типом, ни модификатором, как предполагает ваш вопрос, это просто спецификатор для long int
типа. То же long long
самое для спецификатора long long int
типа.
Хотя сам стандарт C ++ не определяет минимальные диапазоны целочисленных типов, он ссылается на C99 в 1.2 Normative references
качестве применяемого. Следовательно, минимальные диапазоны, изложенные в C99 5.2.4.2.1 Sizes of integer types <limits.h>
, применимы.
С точки зрения long double
, это на самом деле значение с плавающей запятой, а не целое число. Как и в случае целочисленных типов, требуется иметь как минимум такую же точность, как и, double
и предоставлять надмножество значений для этого типа (то есть, по крайней мере, те значения, а не обязательно больше значений).
Horizontal Rail, Front, Type H-LD, Heavy, Long Lip, for IEEE Application, 40 HP 34560-340
Поставщики в вашем регионе
Ниже приведен список местных поставщиков, которые в настоящее время имеют этот товар на складе:
Дистрибьютор | Количество | Дата наличия на складе | ||
---|---|---|---|---|
Информация отсутствует. |
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ ОБ ИЗДЕЛИИ
Горизонтальный рельс с длинной кромкой позволяет использовать ручки для вставки/извлечения согласно IEEE.
Поставка исключительно в размере товарной партии. Цена указана за отдельную единицу.
Обратите внимание, что поставки доступны в указанных стандартных товарных партиях (товарная партия, например, 5 шт., 10 шт., 50 шт. и т. д.). Другие объемы заказов (например, 2 шт.) могут округляться вверх до следующего возможного размера стандартной товарной партии.
Комплектность поставки
В комплект поставки этого изделия входят следующие позиции:
Изделие | Описание | Количество | |
---|---|---|---|
1 | Горизонтальный рельс, тип H-LD, алюминиевый профиль, анодирование, поверхности контакта электропроводящие, с маркировкой HP | 1 |
Единобразие типов | Scala Documentation
В Scala все значения имеют тип, включая числовые значения и функции. Диаграмма ниже иллюстрирует подмножество иерархии типов.
Иерархия типов Scala
Any
это супертип всех типов, также называемый верхним типом. Он определяет несколько универсальных методов, таких как equals
, hashCode
и toString
. У Any
есть два прямых подкласса: AnyVal
и AnyRef
.
AnyVal
представляет числовые типы. Существует девять предварительно определенных числовых типов и они никогда не могут быть равны ‘null’: Double
, Float
, Long
, Int
, Short
, Byte
, Char
, Unit
, и Boolean
. Unit
— это числовой тип, который не содержит значимой информации (также обозначает пустое множество). Есть только один представитель типа Unit
, который можно объявить вот так: ()
. Все функции должны возвращать что-то, поэтому иногда Unit
полезный для возврата тип.
AnyRef
представляет ссылочные типы. Все типы, не относящиеся к “числовым типам”, называются ссылочными типами. Каждый объявляемый пользователем тип в Scala является подтипом AnyRef
. Если в Scala исходить из контекста среды исполнения Java, AnyRef
соответствует java.lang.Object
.
Вот пример, демонстрирующий, что строки, целые числа, символы, логические значения и функции являются объектами, как и любой другой объект:
val list: List[Any] = List(
"a string",
732, // целое число
'c', // символ
true, // логическое значение
() => "анонимная функция возвращающая строку"
)
list.foreach(element => println(element))
Объявляем переменную list
типа List[Any]
. Список инициализируется элементами различных типов, но все они являются экземпляром scala.Any
, так что вы можете добавить их в список.
Ниже приведен вывод программы:
a string
732
c
true
<function>
Приведение типа
Числовые типы могут быть приведены следующим образом:
Например:
val x: Long = 987654321
val y: Float = x // 9.8765434E8 (заметьте, что некоторая точность теряется в этом случае.)
val face: Char = '☺'
val number: Int = face // 9786
Приведение типа — однонаправленно. Следующий пример не скомпилируется:
val x: Long = 987654321
val y: Float = x // 9.8765434E8
val z: Long = y // обратно не подходит
Вы также можете приводить к своему подтипу. Об этом мы поговорим позже в ходе нашего обзора.
Nothing и Null
Nothing
является подтипом всех типов, также называемым нижним типом. Нет значения, которое имеет тип Nothing
. Обычно он используется чтоб дать сигнал о не вычислимости, например брошено исключение, выход из программы, бесконечное зацикливание (т.е. это тип выражения, которое не вычисляется).
Null
подтип всех ссылочных типов (т.е. любой подтип AnyRef). Он имеет одно значение, определяемое ключевым словом литерала null
. Null
предоставляется в основном для функциональной совместимости с другими языками JVM и почти никогда не должен использоваться в коде Scala.31. Если у вас 64-битная система, то тип long тоже будет 8-байтовым. А в 32-разрядной системе приходится довольствоваться только им. Этот тип данных получил права только в последних версиях С++, например, в С++ 6.0 вы его найдёте, но работать с ним там одно удовольствие.
Несмотря на то, что у long long есть закреплённые права и обязанности. Использовать его всё равно следует по-особенному. Для начала следует учесть, что простое присваивание ему значений не прокатит. Если вы хотите присвоить значение переменной типа long long, то не забудьте приставить к числу две буквы LL (которые видимо символизируют, что число «longlong» 64-битное).
long long temp = 1100LL;
Далее: про соответствие типов. Думаю, когда человек первый раз «берёт в руки» этот тип данных ему становится интересно, а как он соотносится с типом int?
Отношения у long long c int очень интересные. Если вы хотите складывать два числа int, зная, что результат выйдет за диапазон int, то вы можете использовать long long. Сложите два int присвоите long long и все будут счастливы.
int a1 = 2000000000;
int a2 = 2000000000;
long long b = a1 + a2;
b равен 400000000. И здесь проблем возникнуть не должно.
С умножением int’ов дела гораздо интереснее. Если вы просто возьмёте две переменные типа int и перемножите их между собой, зная, что результат выйдет за пределы int, то ничего у вас не получится. Переменная типа long long будет просто равна нулю. В итоге, чтобы умножать в Visual C++ числа типа int и получить long long следует проделать сложения через цикл, т.е. если мы хотим умножить число а на число b, то всё будет выглядеть так.
long long temp = 0;
for (int i = 0; i < a; i++) {
temp += b;
}
И только тогда захочет быть произведением.
c — Тип long Vs Тип long int
Что будет означать следующий typedef и зачем он нужен
typedef unsigned long int ULONG;
Насколько это отличается от
typedef unsigned long ULONG;
Для gcc sizeof int = 4, sizeof long = 8 и sizeof ULONG = 8.
4
Kamath
6 Июн 2012 в 11:52
4 ответа
Лучший ответ
Они одинаковые. Поскольку long
по умолчанию является модификатором для int
, int
можно опустить. То же самое касается short
и short int
, unsigned
и unsigned int
и т. Д.
Здесь важно понимать, что long
, short
и unsigned
являются модификаторами типа , а не сами типы, в отличие от int
, char
, double
и т. Д.
10
Blagovest Buyukliev
6 Июн 2012 в 08:04
На самом деле unsigned long
не определен в стандарте C ++ ISO / IEC 14882, поэтому, если он работает для вас, то только потому, что ваш компилятор интерпретирует unsigned long int
как unsigned long
.
3
Jonathan Leffler
30 Окт 2012 в 17:48
Нет никакой разницы. long
является синонимом long int
(так же, как short
является синонимом short int
).
3
Jerry Coffin
6 Июн 2012 в 07:54
Размер long не связан с gcc, а с os
-1
waitingkuo
6 Июн 2012 в 07:56
Длинный тип данных — Visual Basic
- 2 минуты на чтение
В этой статье
Содержит 64-битные (8-байтовые) целые числа со знаком в диапазоне значений от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 (9,2 … E + 18).
Замечания
Используйте тип данных Long
, чтобы содержать целые числа, которые слишком велики, чтобы поместиться в тип данных Integer
.
Значение по умолчанию Long
— 0.
Буквальные присвоения
Вы можете объявить и инициализировать переменную Long
, назначив ей десятичный литерал, шестнадцатеричный литерал, восьмеричный литерал или (начиная с Visual Basic 2017) двоичный литерал. Если целочисленный литерал находится за пределами диапазона Long
(то есть, если он меньше Int64.MinValue или больше Int64.MaxValue, возникает ошибка компиляции.
В следующем примере целые числа, равные 4 294 967 296, которые представлены как десятичные, шестнадцатеричные и двоичные литералы, присваиваются значениям Long
.
Dim longValue1 As Long = 4294967296
Console.WriteLine (longValue1)
Dim longValue2 As Long = & h200000000
Console.WriteLine (longValue2)
Dim longValue3 As Long = & B1_0000_0000_0000_0000_0000_0000_0000_0000
Console.WriteLine (longValue3)
'В примере отображается следующий вывод:
'4294967296
'4294967296
'4294967296
Примечание
Вы используете префикс & h
или & H
для обозначения шестнадцатеричного литерала, префикс & b
или & B
для обозначения двоичного литерала и префикс & o
или & O
для обозначения восьмеричного литерала.Десятичные литералы не имеют префикса.
Начиная с Visual Basic 2017, вы также можете использовать символ подчеркивания _
в качестве разделителя цифр для повышения удобочитаемости, как показано в следующем примере.
Dim longValue1 As Long = 4_294_967_296
Console.WriteLine (longValue1)
Dim longValue2 As Long = & h2_0000_0000
Console.WriteLine (longValue2)
Dim longValue3 As Long = & B1_0000_0000_0000_0000_0000_0000_0000_0000
Console.WriteLine (longValue3)
'В примере отображается следующий вывод:
'4294967296
'4294967296
'4294967296
Начиная с Visual Basic 15.5, вы также можете использовать символ подчеркивания ( _
) в качестве ведущего разделителя между префиксом и шестнадцатеричными, двоичными или восьмеричными цифрами. Например:
Размерное число As Long = & H_0FAC_0326_1489_D68C
Чтобы использовать символ подчеркивания в качестве ведущего разделителя, необходимо добавить в файл проекта Visual Basic (* .vbproj) следующий элемент:
15.5
Дополнительные сведения см. В разделе Выбор языковой версии Visual Basic.
Числовые литералы также могут включать в себя символ типа L
для обозначения типа данных Long
, как показано в следующем примере.
Размерное число = & H_0FAC_0326_1489_D68CL
Советы по программированию
Рекомендации по взаимодействию. Если вы взаимодействуете с компонентами, написанными не для .NET Framework, например с объектами автоматизации или COM, помните, что
Long
имеет другую ширину данных (32 бита) в других средах.Если вы передаете 32-битный аргумент такому компоненту, объявите его какInteger
вместоLong
в новом коде Visual Basic.Расширение. Тип данных
Long
расширяется доDecimal
,Single
илиDouble
. Это означает, что вы можете преобразоватьLong
в любой из этих типов без возникновения ошибки System.OverflowException.Тип символов. Добавление символа типа литерала
L
к литералу принудительно приводит его к типу данныхLong
. Добавление символа типа идентификатораи
к любому идентификатору приводит к установкеLong
.Тип каркаса. Соответствующим типом в .NET Framework является структура System.Int64.
См. Также
5 примеров типов данных Java int, Integer и long
Типы данных int и long в Java
Java предоставляет ряд числовых типов данных, в том числе int и long.Int и long — примитивные типы данных; int занимает 32 бита или четыре байта памяти, а long занимает 64 бита или 8 байтов.
int пример длинный пример
Итак, если ваша программа должна хранить небольшие числа, используйте тип int. Если число больше + — 2 миллиарда (около) , тогда используйте переменную длинного типа Java.
Как типы int, так и long имеют классы-оболочки в Java. int имеет целое число , а long имеет класс оболочки Long .
Пример целочисленного класса
Существуют определенные сценарии, когда вам нужно работать с объектами, а не использовать примитивные типы данных для хранения числовых значений; Я объясню это в более поздней части этого урока. Сначала рассмотрим несколько примеров объявления и использования типов данных int и long.
Пример использования типа Java int
Вот как вы можете объявлять и использовать переменные типа int в программах Java. См. Этот пример, в котором я объявил и присвоил значения переменным типа int двумя способами:
Посмотреть онлайн-демонстрацию и код
Пример кода Java для int:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | открытый класс java_variables { public static void main (String [] args) { // Объявление переменных типа int int num_a, sum_c; int num_b = 500000; число_а = 150000; // Получение суммы двух чисел sum_c = num_a + num_b; Система.out.println («Сумма двух переменных типа int равна =» + sum_c); } } |
Результат:
Как видите, первая строка используется только для объявления двух переменных типа int Java. Значение присваивается num_a после его объявления. Во второй строке объявляется num_b , и значение присваивается во время объявления.
Пример использования переменной int в цикле for
См. Этот пример, в котором переменная типа int используется в цикле for. Переменная объявляется внутри цикла и используется с массивом для отображения элементов массива.
Посмотреть онлайн-демонстрацию и код
Код:
открытый класс java_variables { public static void main (String [] args) { int [] Intarr = {5,10,15,20,25,30,35}; // Объявление переменной типа int внутри цикла for for (int ArrItem: Intarr) { System.out.println («Значение числового массива:» + ArrItem); } } } |
Выход:
Использование примера длинного типа данных Java
Как и переменные типа int, объявляется тип long. Вы можете присвоить значение во время объявления или после этого. Как упоминалось ранее, тип long занимает 64 бита памяти, поэтому может хранить гораздо большее значение, чем тип int, который занимает 32 бита.
Взгляните на следующий пример, где переменные типа long объявляются, им присваиваются значения и используются в вычислениях. Для демонстрации значения длинных переменных сохраняются немного выше, чем предел типа int:
Посмотреть онлайн-демонстрацию и код
Код Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | открытый класс java_variables { public static void main (String [] args) { // Объявление переменных длинного типа long num_a, sum_c; длинный num_b = 2147483649L; num_a = 2147483649L; // Получение суммы двух длинных чисел sum_c = num_a + num_b; Система.out.println («Сумма двух длинных переменных =» + sum_c); } } |
Вывод приведенного выше кода:
Значения переменной типа long используются с буквой L в конце.
Несколько основных моментов о примитивных типах int и long
Прежде чем переходить к примерам использования классов Java Integer и Long, давайте взглянем на несколько важных моментов, касающихся типов данных int и long, а также классов Integer / Long:
Целое и целое число
- int — это числовые примитивные типы данных в Java.
- int занимает 32-битную память.
- Максимальное значение, которое может хранить переменная типа int, равно 2 147 483 647.
- Минимальное значение переменной int может быть — 2 147 483 648.
- Значение int по умолчанию — 0.
- У int есть класс-оболочка Integer в Java.
- Тип int не может хранить нулевое значение, в то время как целое число может.
- Преимущество целочисленного класса может заключаться в использовании в коллекциях с универсальными шаблонами или ссылками на объекты, которые нельзя использовать с примитивным типом.
- Как и другие классы, вы должны создавать объекты целочисленного класса, которые содержат одно поле, то есть int.
Длинный (примитивный тип) и Длинный класс:
- Long — это числовой тип данных в Java.
- Это тоже примитивный тип.
- Длинный тип занимает 64 бита памяти.
- Максимальное значение, которое может хранить переменная типа long, составляет 9,223,372,036,854,775,807L .
- Минимальное значение: -9,223,372,036,854,775,808L .
- Класс-оболочка для long — Long.
Пример использования целочисленного класса
В этом простом примере использования класса Integer три переменные объявлены так же, как в приведенных выше примерах. Двум присваиваются значения, а третья целочисленная переменная представляет собой сумму двух других. Посмотри:
Посмотреть онлайн-демонстрацию и код
Код с целочисленным классом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | открытый класс java_variables { public static void main (String [] args) { // Объявление переменных целочисленного типа Integer num_a, sum_c; Целое число num_b = 214748364; num_a = 214748364; // Получение суммы двух целых чисел sum_c = num_a + num_b; Система.out.println («Сумма двух целочисленных переменных равна =» + sum_c); } } |
Пример использования целого числа в коллекции ArrayList
Как упоминалось ранее, класс Integer можно использовать с универсальными шаблонами. Например, если вы хотите создать ArrayList из чисел int, вы не можете сделать это, используя примитивный тип int. Таким образом, универсальные типы должны быть объектами типа, поэтому вы можете использовать здесь Integer.
В следующем примере ArrayList создается с пятью числовыми элементами. ArrayList объявлен с типом Integer, поэтому элементы могут быть только числами. Вот как используется целое число:
Посмотреть онлайн-демонстрацию и код
ArrayList с целыми числами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | импорт java.util. *; открытый класс java_variables { public static void main (String [] args) { ArrayList IntegerArrLst.add (5); IntegerArrLst.add (10); IntegerArrLst.добавить (15); IntegerArrLst.add (20); IntegerArrLst.add (25); // Отображение списка массивов для (int IntgerArrItem: IntegerArrLst) { System.out.println («Целочисленный элемент в ArrayList: «+ IntgerArrItem); } } } |
Результат:
Если вы попытаетесь использовать примитивный тип int вместо целых чисел в приведенном выше примере, будет сгенерирована ошибка.
Точно так же вы можете использовать Integer в других типах коллекций, таких как векторы.
Длинный класс
Для длинного примитивного типа класс-оболочка в Java — Long . Вы можете применить те же примеры, которые использовались для целочисленного класса в разделе выше; для больших значений.
Примитивные типы данных Java — HowToDoInJava
Узнайте обо всех восьми примитивных типах данных в Java , их размерах памяти, значениях по умолчанию и диапазоне максимального и минимального значений.
Примитивные типы данных предопределены языком Java и названы зарезервированным ключевым словом. Давайте посмотрим на каждый примитивный тип данных на изображении ниже.
Примитивные типы данных в java
1. Интегральные типы данных Java
Целочисленный тип данных — это числовой тип данных, значения которого относятся к целочисленному типу .
Java предлагает пять интегральных типов данных :
1.1.
внутренний
тип
- Тип данных
int
— это примитивный тип данных Java с 32-битным знаком .Переменная типа данныхint
занимает 32 бита памяти . - Допустимый диапазон: от -2 147 483 648 до 2 147 483 647 (от -2 31 до 2 31 — 1).
- Все целые числа в этом диапазоне называются целочисленными литералами (или целочисленными константами). Например, 10, -200, 0, 30, 19 и т. Д. Являются целочисленными литералами int.
Целочисленный литерал может быть назначен переменной int
, например, counter
, например:
int counter = 21;
1.1.1. Целочисленный класс оболочки
Java имеет класс-оболочку с именем Integer
, который определяет две константы для представления максимального и минимального значений для типа данных int: Integer.MAX_VALUE
и Integer.MIN_VALUE
. Это объектное представление значения типа int.
int max = Целое число.MAX_VALUE; // Присваивает максимальное значение int max int min = целое.MIN_VALUE; // Присваивает минимальное значение int для min
1.2.
длинный
тип
- Длинный тип данных — это 64-битный подписанный Java-примитивный тип .
- Используется, когда результат вычислений целых чисел может выходить за пределы диапазона типа данных int.
- Диапазон значений от -2 63 до 2 63 — 1.
- Все целые числа в диапазоне long называются целочисленными литералами типа long .
Целочисленный литерал типа long всегда заканчивается на «L» (или на строчную «l»).
длинное число1 = 0L; длинное число2 = 401л; длинный mum3 = -3556L;
1.2.1. Тип литье
Даже если значение, хранящееся в переменной long
, находится в пределах диапазона типа данных int
, присвоение от long к int не допускается без явного приведения типа , как показано в следующем примере:
int num1 = 5; длинное число2 = 25л; // Ошибка времени компиляции. Даже если num2 имеет значение 25, которое находится в диапазоне int. число1 = число2;
Если вы хотите присвоить значение переменной long
переменной int
, вы должны явно указать этот факт в своем коде , чтобы Java была уверена, что вы знаете, что может произойти переполнение данных.Вы делаете это, используя «cast» в Java, например:
длинное число1 = (целое число) число2; // Теперь все в порядке благодаря приведению "(int)"
Записывая (int) num2
, вы инструктируете Java обрабатывать значение, хранящееся в num2
, как int. Во время выполнения Java будет использовать только 32 младших бита num2
и присвоить значение, хранящееся в этих 32 битах, num1
. Если num2
имеет значение, выходящее за пределы диапазона типа данных int, вы не получите такое же значение в num1
, и это приведет к потере данных .
1.2.2. Класс Long Wrapper
Java имеет класс Long
(обратите внимание на верхний регистр L в Long), который определяет две константы для представления максимального и минимального значений типа данных long: Long.MAX_VALUE
и Long.MIN_VALUE
.
long max = Long.MAX_VALUE; long min = Long.MIN_VALUE;
1.3.
байт
тип
- Тип данных байт — это примитивный целочисленный тип данных Java с 8-битным знаком .
- Его диапазон составляет от -128 до 127 (от -27 до 27 — 1). Это наименьший целочисленный тип данных , доступный в Java.
- В отличие от
int
иlong
литералов, здесь нет байтовых литералов. - Однако вы можете присвоить байтовой переменной любой литерал int, попадающий в диапазон байтов.
байт b1 = 125; байт b2 = -11;
1.3.1. Тип литье
Если вы назначаете литерал int
переменной byte
и значение выходит за пределы диапазона байтового типа данных, Java генерирует ошибку компилятора.Следующий фрагмент кода вызовет ошибку компилятора:
// Ошибка. 150 является внутренним литералом за пределами от -128 до 127 байт b3 = 150;
Java не позволяет вам присваивать значение переменной типа данных более высокого диапазона переменной типа данных более низкого диапазона, потому что при выполнении такого присваивания возможна потеря точности . Чтобы сделать такое присваивание от int к байту, вы должны использовать приведение, как вы это делали в случае присваивания long-to-int.
b1 = (байт) num1; // Ok
1.3.2. Класс Byte Wrapper
Java имеет класс Byte
(обратите внимание на верхний регистр B в Byte), который определяет две константы для представления максимального и минимального значений байтового типа данных: Byte.MAX_VALUE
и Byte.MIN_VALUE
.
макс. байт = Byte.MAX_VALUE; байт min = Byte.MIN_VALUE;
1,4.
короткий
тип
short
— это примитивный целочисленный тип данных Java с 16-битным знаком .Его диапазон составляет от -32768 до 32767 (или от -215 до 215-1).короткий s1 = 12905; // Ok короткий s2 = -11890; // Ok
Значение байтовой переменной всегда можно присвоить переменной типа short, потому что диапазон байтового типа данных попадает в диапазон короткого типа данных.Все остальные правила присвоения значения переменной типа int или long переменной типа short такие же, как и для переменной byte.
1.4.1. Класс короткой упаковки
В Java есть класс Short
(обратите внимание на верхний регистр S в Short), который определяет две константы для представления максимального и минимального значений типа данных short: Short.MAX_VALUE
и Short.MIN_VALUE
.
short max = Short.MAX_VALUE; short min = Short.MIN_VALUE;
1.5.
char
тип данных
- Тип данных char является примитивным типом данных Java 16-бит без знака .
- Представляет символ Unicode .
- Обратите внимание, что char — это беззнаковый тип данных. Следовательно, переменная типа char не может иметь отрицательное значение.
- Диапазон типа данных char составляет от 0 до 65535, что совпадает с диапазоном набора Unicode.
- Символьный литерал представляет значение типа данных char.
char c1 = 'А'; char c2 = 'L'; char c3 = '5'; char c4 = '/';
1.5.1. Управляющие последовательности символов
Символьный литерал также может быть выражен как escape-последовательность из символов . Управляющая последовательность символов начинается с обратной косой черты, за которой сразу следует символ, и оба символа заключаются в одинарные кавычки.
Существует восемь предопределенных escape-последовательностей , как указано ниже:
Последовательность выхода персонажа | Описание |
---|---|
‘\ n’ | Перевод строки |
‘\ r’ | Возврат каретки |
‘\ f’ | Подача формы |
‘\ b’ | Возврат |
‘\ t’ | Выступ |
‘\\’ | Обратная косая черта |
‘\” ‘ | Двойная кавычка |
‘\” | Одинарная цитата |
В Java это только восьмисимвольные escape-последовательности.Вы не можете определить escape-последовательности для своих персонажей.
1.5.2. Управляющая последовательность Unicode
Символьный литерал также может быть выражен как escape-последовательность Unicode в форме '\ uxxxx'
, Здесь \ u (обратная косая черта, сразу за которой следует строчная u) обозначает начало escape-последовательности Unicode, а xxxx представляет собой ровно четыре шестнадцатеричных цифры.
char c1 = 'А'; char c2 = '\ u0041'; // То же, что c2 = 'A'
2.Типы данных Java с плавающей запятой
Число с плавающей запятой, которое содержит дробную часть , называется действительным числом , например 3,25, 0,49, -9,19 и т. Д.
Как числа хранятся в памяти
Когда действительное число преобразуется в его двоичное представление, компьютер также должен сохранять позицию десятичной точки в числе. Есть две стратегии хранения действительного числа в памяти компьютера.
- Формат чисел с фиксированной запятой — Сохраняет только двоичное представление числа и предполагает, что всегда есть фиксированное количество цифр до и после точки.Точка называется десятичной точкой , в десятичном представлении числа и двоичной точкой в двоичном представлении. Тип представления, в котором положение точки всегда фиксируется числом, известен как числовой формат с фиксированной точкой.
- Формат числа с плавающей запятой — Сохранение двоичного представления действительного числа и положения точки в действительном числе. Поскольку количество цифр до и после точки может варьироваться в этом виде представления действительного числа, мы говорим, что точка может плавать.Такой вид представления называется форматом с плавающей запятой.
Представления с плавающей запятой на медленнее и менее точны по сравнению с представлениями с фиксированной запятой. Однако представления с плавающей запятой могут обрабатывать больший диапазон чисел с той же компьютерной памятью по сравнению с представлениями с фиксированной запятой.
Java поддерживает числовой формат с плавающей запятой.
IEEE-754 32-битные числа с плавающей запятой одинарной точности
Java имеет два числовых типа данных с плавающей запятой: float и double .
2.1.
поплавок
тип
Тип данных с плавающей запятой использует 32 бита для хранения числа с плавающей запятой в стандартном формате IEEE 754 ( число с плавающей запятой одинарной точности ). Он может представлять собой действительное число от 1,4 x 10 -45 до 3,4 x 10 38 (приблизительно) по величине. В диапазон входит только величина. Это могло быть положительно или отрицательно.
Все действительные числа, заканчивающиеся на «f» или «F», называются литералами с плавающей запятой .
поплавок f1 = 8F; float f2 = 8.F; float f3 = 8.0F;
2.1.1. Положительная и отрицательная бесконечность
Тип данных float определяет две бесконечности: положительную бесконечность и отрицательную бесконечность. Например, результатом деления 2,5F
на 0,0F
является положительная бесконечность с плавающей запятой, тогда как результатом деления 2,5F
на -0,0F
является отрицательная бесконечность с плавающей запятой.
2.1.2. NaN (не число)
Результаты некоторых операций с поплавком не определены.Эти результаты представлены специальным значением типа данных с плавающей запятой, называемым NaN (Not-a-Number).
Float
Класс определяет три константы, которые представляют положительную бесконечность, отрицательную бесконечность и NaN типа данных с плавающей запятой. Есть еще две константы, которые представляют максимальное и минимальное (больше нуля) значения с плавающей запятой, которые могут быть сохранены в переменной с плавающей запятой.
Float.POSITIVE_INFINITY - положительная бесконечность типа float. Float.NEGATIVE_INFINITY - отрицательная бесконечность типа float.Float.NaN - Не число типа float. Float.MAX_VALUE - наибольшее положительное значение, которое может быть представлено в переменной с плавающей запятой. Float.MIN_VALUE - наименьшее положительное значение больше нуля, которое может быть представлено в переменной с плавающей запятой.
Обратите внимание, что значение всех целочисленных типов (int, long, byte, short и char) может быть присвоено переменной типа данных с плавающей запятой без использования явного приведения, НО значение с плавающей запятой должно быть приведено до того, как оно будет присвоено в переменную любого целого типа данных int, long, byte, short или char.
2.2.
двойной
тип
Двойной тип данных использует 64 бита для хранения числа с плавающей запятой в «стандартном формате IEEE 754». Число с плавающей запятой, представленное в 64-битном формате в соответствии со стандартом IEEE 754, также известно как число с плавающей запятой двойной точности .
Все действительные числа называются двойными литералами . Двойной литерал может необязательно оканчиваться на «d» или «D», например, 19.27d. Однако суффикс d или D в двойных литералах необязателен.То есть и 19.27, и 19.27d представляют один и тот же двойной литерал.
двойной d1 = 8D двойной d2 = 8 .; двойной d3 = 8,0; двойной d4 = 8.D;
Как и тип данных float, тип данных double определяет максимальное, минимальное, две бесконечности и значения NaN.
Double.POSITIVE_INFINITY - положительная бесконечность типа double. Double.NEGATIVE_INFINITY - отрицательная бесконечность типа double. Double.NaN - Не число типа double. Двойной.MAX_VALUE - наибольшее положительное значение, которое может быть представлено в переменной типа double. Double.MIN_VALUE - наименьшее положительное значение больше нуля, которое может быть представлено в переменной типа double.
3. Логический тип данных Java
3.1.
логическое
тип
Логический тип данных имеет только два допустимых значения: true и false . Эти два значения называются логическими литералами . Вы можете использовать логические литералы как
логическое сделано; // Объявляет логическую переменную с именем done сделано = правда; // Присваивает истину сделанному
Следует отметить один важный момент: логическая переменная не может быть приведена к любому другому типу данных и наоборот .В Java не указан размер логического типа данных. Его размер оставлен на усмотрение реализации JVM. Обычно значение логического типа данных хранится внутри в байтах.
Это все для 8 примитивных типов данных, доступных в java .
Счастливого обучения !!
VBA Long (пример) | Пошаговое руководство по длинному типу данных в Excel VBA
Что такое длинный тип данных в VBA?
Long — это тип данных в VBA , который используется для хранения числовых значений, мы знаем, что целое число также содержит числовые значения, но Long отличается от целых чисел, поскольку диапазон для хранения данных очень велик в случае длинных данных type также в длинном типе данных, мы также можем хранить десятичные значения, это встроенный тип данных.
«Длинный», , как следует из названия, должен содержать ценность чего-то большого. «Длинный» — это числовой тип данных в VBA Excel.
Длинный тип данных в Excel VBA может содержать значения от 0 до 2, 147, 483, 647 для положительных чисел, а для отрицательного числа он может содержать значения от 0 до -2, 147, 483, 648.
VBA Длинный тип данных требует 4 байта памяти вашего компьютера. Это двойная целочисленная память типа данных (2 байта) и половина памяти переменной типа данных double (8 байтов)
Я никогда не видел сценария, в котором я хотел бы полностью использовать ограничение типа данных VBA Long за свою короткую карьеру.Но я покажу вам несколько примеров, чтобы лучше понять это.
Вы можете свободно использовать это изображение на своем веб-сайте, в шаблонах и т. Д. Пожалуйста, предоставьте нам ссылку с указанием авторства Ссылка на статью с гиперссылкой
Например:
Источник: VBA Long (wallstreetmojo.com)
Примеры длинного типа данных VBA
Ниже приведены примеры типа данных Excel VBA Long.
Длинный пример # 1 для VBA
Как только вы объявите тип данных переменной как «Long», вы можете присвоить значения от -2, 147, 483, 648 до 2, 147, 483, 648.
Например, объявите переменную как длинный тип данных.
Код:
.
Sub Long_Example1 () Dim k As Long Концевой переводник
Давайте присвоим значение как общее количество строк на листе.
Чтобы получить общее количество строк в Excel Существует множество способов подсчета строк в Excel с использованием соответствующей формулы, будь то строки данных, пустые строки или строки, содержащие числовые / текстовые значения. В зависимости от обстоятельств вы можете использовать функции СЧЁТ, СЧЁТ, СЧИТАТЬПУСТОТЫ или СЧЁТЕСЛИ.читать больше код рабочего листа «Строки. Граф »
Код:
.
Sub Long_Example1 () Dim k As Long k = Rows.Count Концевой переводник
Теперь покажите значение в окне сообщения.
Код:
.
Sub Long_Example1 () Dim k As Long k = Rows.Count MsgBox k Концевой переводник
Запустите этот код и посмотрите, сколько всего строк на листе.
Он говорит, что у нас более 1 миллиона строк на листе.
Теперь для лучшего понимания я изменю тип данных с LONG на INTEGER.
Код:
.
Sub Long_Example1 () Dim k как целое число k = Rows.Count MsgBox k Концевой переводник
Если я запускаю код VBA Код VBA относится к набору инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи. Подробнее, я получу сообщение об ошибке: « Переполнение «.
Причина, по которой мы получили эту ошибку при обработке ошибок VBAVBA, связана с устранением различных типов ошибок, возникающих при работе с VBA.подробнее, потому что тип данных «Целое число» может содержать только значения от -31768 до 32767. В этом случае «Ряды. Count »вернет число, превышающее предел« целочисленной »переменной.
Присвоение значения более 1 миллиона переменной, которая может содержать только 32767, вызывает здесь ошибку переполнения.
Длинный пример # 2 для VBA
Найти последнюю строку с помощью длинной переменной
Поиск последней использованной строки рабочего листа — самая важная часть кодирования.Чтобы найти последнюю использованную строку рабочего листа, необходимо объявить переменную. Объявление переменной и присвоение типа данных требует некоторого здравого смысла.
Предположим, у вас есть данные, заканчивающиеся на 25000 строках, как показано на рисунке ниже.
Теперь я знаю, что номер последней использованной строки — 25000. Для этого нам не нужен тип данных «LONG», поскольку тип данных «INTEGER» может дать мне последнюю строку.
Посмотрите на приведенный ниже код для вашей информации.
Код:
.
Sub Long_Example1 () Dim k как целое число k = Ячейки (Строки.Count, 1) .End (xlUp) .Row MsgBox k Концевой переводник
Если я запустил этот код, я получу номер последней использованной строки рабочего листа, над которым я работаю в данный момент.
Как кодировщику важно знать размер данных, которые у вас будут в будущем. Поскольку в настоящий момент данные могут заканчиваться на 25000 -й строке , но если данные увеличиваются за пределы «целочисленного» предела, то есть 32767, это вызывает ошибку переполнения.
Например, я увеличу данные до 32768 -х строк.
Теперь, если я снова запущу тот же код, я не получу значение. Скорее, я получу сообщение об ошибке, как показано ниже.
Помните, я увеличил предел всего на 1 сверх предела значения «Целое число», поэтому я получил ошибку переполнения.
Поэтому важно знать размер ваших данных, прежде чем назначать тип данных переменной. Всегда лучше объявить переменную как «LONG», не задумываясь о размере ваших данных в будущем.
Альтернативы Excel VBA Long Variable
Вы, должно быть, уже думаете о том, что, если мы хотим удерживать значение больше, чем предел длинной переменной.Для этого нам нужно использовать разные типы данных, то есть либо VBA «String», либо «Variant».
Помните, что в тот момент, когда он пересекает число 2147483647, мы получим ошибку переполнения в VBAVBA Overflow Error или «Ошибка времени выполнения 6: переполнение» возникает, когда пользователь вставляет значение, превышающее емкость определенного типа данных переменной. Таким образом, это ошибка, возникающая в результате перегрузки данных за пределы желаемого ограничения типа данных переменной. Подробнее о типе данных LONG. Чтобы хранить больше этого числа, нам нужно использовать тип данных «Строка» или «Вариант».
Для строки
Код:
.
Sub Long_Example2 () Dim k As String к = 2147483648 MsgBox k Концевой переводник
для варианта
Код:
.
Sub Long_Example2 () Dim k как вариант к = 2147483648 MsgBox k Концевой переводник
Когда мы запускаем вышеуказанные коды, он покажет упомянутый номер.
Рекомендуемые статьи
Это руководство по типу данных VBA Long в Excel.Здесь мы узнаем, как использовать тип данных VBA Long, вместе с практическими примерами и загружаемым шаблоном Excel. Ниже приведены несколько полезных статей в Excel, связанных с VBA —
.
Обучение VBA (3 курса, 12+ проектов)
- 3 курса
- 12 практических проектов
- 43+ часов
- Полный пожизненный доступ
- Свидетельство о завершении
ПОДРОБНЕЕ >>
Типы данных
OAS 3 Это руководство предназначено для OpenAPI 3.0.
Типы данных
Тип данных схемы определяется ключевым словом type
, например type: string
. OpenAPI определяет следующие основные типы:
Эти типы существуют в большинстве языков программирования, хотя могут иметь разные имена. Используя эти типы, вы можете описывать любые структуры данных.
Обратите внимание, что не существует типа null
; вместо этого атрибут , допускающий значение NULL,
используется как модификатор базового типа.
Дополнительные ключевые слова для типа
могут использоваться для уточнения типа данных, например, для ограничения длины строки или указания перечисления
возможных значений.
Смешанные типы
Тип
принимает одно значение. тип
, поскольку список недопустим в OpenAPI (хотя он действителен в схеме JSON):
# Неверно
тип:
- нить
- целое число
Смешанные типы могут быть описаны с помощью oneOf
и anyOf
, которые определяют список альтернативных типов:
# правильный
один из:
- тип: строка
- тип: целое число
См. Также Любой тип.
Номера
OpenAPI имеет два числовых типа: номер
и целое число
, где номер
включает как целые числа, так и числа с плавающей запятой. Необязательное ключевое слово формата служит подсказкой для инструментов использовать определенный числовой тип:
тип | формат | Описание |
---|---|---|
номер | – | Любые числа. |
номер | поплавок | Числа с плавающей запятой. |
номер | двойной | Числа с плавающей запятой с двойной точностью. |
целое | – | Целые числа. |
целое | int32 | 32-битные целые числа со знаком (обычно используемый целочисленный тип). |
целое | инт64 | 64-битные целые числа со знаком (длинное , тип ). |
Обратите внимание, что строки, содержащие числа, например «17», считаются строками, а не числами.
Минимум и максимум
Используйте ключевые слова минимум
и максимум
, чтобы указать диапазон возможных значений:
тип: целое число
минимум: 1
максимум: 20
По умолчанию в диапазон включены минимальные
и максимальные
значения, то есть:
минимум ≤ значение ≤ максимум
Чтобы исключить граничные значения, укажите exclusiveMinimum: true
и exclusiveMaximum: true
.Например, вы можете определить диапазон чисел с плавающей запятой как 0–50 и исключить значение 0:
тип: номер
минимум: 0
эксклюзивМинимум: правда
максимум: 50
Слово «эксклюзивный» в эксклюзивный минимум
и эксклюзивный максимум
означает, что соответствующая граница исключено :
Ключевое слово | Описание |
---|---|
эксклюзивно Минимум: ложно или не включено | значение ≥ минимум |
эксклюзивный минимум: истинный | значение> минимум |
эксклюзивно Максимум: ложно или не включено | значение ≤ максимальное |
эксклюзивный Максимум: истинный | значение < максимальное |
Кратное
Используйте ключевое слово multipleOf
, чтобы указать, что число должно быть кратным другому числу:
тип: целое число
multipleOf: 10
Приведенный выше пример соответствует 10, 20, 30, 0, -10, -20 и так далее. multipleOf
можно использовать с числами с плавающей запятой, но на практике это может быть ненадежным из-за ограниченной точности или математики с плавающей запятой.
тип: номер
multipleOf: 2,5
Значение multipleOf
должно быть положительным числом, то есть вы не можете использовать multipleOf: -5
.
Струны
Строка текста определяется как:
тип: строка
Длина строки может быть ограничена с помощью значений minLength
и maxLength
:
тип: строка
minLength: 3
максДлина: 20
Обратите внимание, что пустая строка «» является допустимой строкой, если не указано minLength
или шаблон
.
Строковые форматы
Необязательный модификатор формата
служит подсказкой для содержимого и формата строки. OpenAPI определяет следующие встроенные строковые форматы:
-
дата
— обозначение полной даты, как определено в RFC 3339, раздел 5.6, например 2017-07-21 -
дата-время
— обозначение даты и времени, как определено в RFC 3339, раздел 5.6, например 2017-07-21T17: 32: 28Z -
пароль
— подсказка пользовательскому интерфейсу для маскировки ввода -
байт
— символы в кодировке base64, например U3dhZ2dlciByb2Nrcw == -
двоичный
— двоичные данные, используемые для описания файлов (см. Файлы ниже)
Однако формат
является открытым значением, поэтому вы можете использовать любые форматы, даже не определенные в спецификации OpenAPI, например:
-
электронная почта
-
uuid
-
uri
-
имя хоста
-
IPv4
-
ipv6
- и др.
Инструменты могут использовать формат
для проверки ввода или для сопоставления значения с определенным типом на выбранном языке программирования.Инструменты, которые не поддерживают конкретный формат, могут по умолчанию вернуться к только типа
, как если бы формат
не указан.
узор
Ключевое слово pattern
позволяет определить шаблон регулярного выражения для строкового значения. Будут приняты только значения, соответствующие этому шаблону. Используемый синтаксис регулярных выражений взят из JavaScript (точнее, ECMA 262). Регулярные выражения чувствительны к регистру, то есть [a-z] и [A-Z] — это разные выражения.… Жетон $ обеспечивает точное совпадение.
логическое значение
Тип : логическое значение
представляет два значения: true
и false
. Обратите внимание, что истинные и ложные значения, такие как «истина», «», 0 или null
, не считаются логическими значениями.
Нулевой
OpenAPI 3.0 не имеет явного типа null
, как в схеме JSON, но вы можете использовать nullable: true
, чтобы указать, что значение может быть null
. Обратите внимание, что null
отличается от пустой строки «».
# правильный
тип: целое число
обнуляемый: true
# Неверно
тип: null
# Тоже неверно
тип:
- целое число
- нуль
Приведенный выше пример может быть сопоставлен с обнуляемыми типами int?
на C # и java.lang.Integer
на Java. В объектах свойство, допускающее значение NULL, не то же самое, что необязательное свойство, но некоторые инструменты могут выбрать сопоставление необязательного свойства со значением null
.
Массивы
Массивы определяются как:
тип: массив
Предметы:
тип: строка
В отличие от схемы JSON, в массивах требуется ключевое слово items
.Значение элементов
— это схема, описывающая тип и формат элементов массива. Массивы могут быть вложенными:
# [[1, 2], [3, 4]]
тип: массив
Предметы:
тип: массив
Предметы:
тип: целое число
и содержат объекты:
# [{"id": 5}, {"id": 8}]
тип: массив
Предметы:
тип: объект
характеристики:
я бы:
тип: целое число
Схема элемента может быть указана в строке (как в предыдущих примерах) или на нее можно ссылаться через $ ref
:
# Массив домашних животных
тип: массив
Предметы:
$ ref: '# / components / schemas / Pet'
Массивы смешанного типа
Массивы смешанного типа можно определить с помощью oneOf
:
# ["foo", 5, -2, "bar"]
тип: массив
Предметы:
один из:
- тип: строка
- тип: целое число
oneOf
допускает как встроенные подсхемы (как в примере выше), так и ссылки:
# Массив кошек и собак
тип: массив
Предметы:
один из:
- $ ref: '# / components / schemas / Cat'
- $ ref: '# / components / schemas / Dog'
Массив произвольных типов можно определить как:
тип: массив
Предметы: {}
# ["привет", -2, правда, [5.7], {"id": 5}]
Здесь {}
— это схема «любого типа» (см. Ниже). Обратите внимание, что следующий синтаксис для элементов
недопустим:
# Неверно
Предметы:
- тип: строка
- тип: целое число
# Тоже неверно
Предметы:
тип:
- нить
- целое число
Длина массива
Вы можете определить минимальную и максимальную длину массива следующим образом:
тип: массив
Предметы:
тип: целое число
minItems: 1
maxItems: 10
Без minItems
пустой массив считается допустимым.
уникальныйПредметы
Вы можете использовать uniqueItems: true
, чтобы указать, что все элементы в массиве должны быть уникальными:
тип: массив
Предметы:
тип: целое число
uniqueItems: true
# [1, 2, 3] - действительно
# [1, 1, 3] - недействительно
# [] - действительный
Объектов
Объект — это набор пар свойство / значение. Ключевое слово properties
используется для определения свойств объекта — вам необходимо перечислить имена свойств и указать схему для каждого свойства.
тип: объект
характеристики:
я бы:
тип: целое число
имя:
тип: строка
Подсказка: В OpenAPI объекты обычно определяются в разделе глобальных компонентов / схем , а не встроены в определения запросов и ответов.
Требуемые свойства
По умолчанию все свойства объекта необязательны. Вы можете указать необходимые свойства в списке required
:
тип: объект
характеристики:
я бы:
тип: целое число
имя пользователя:
тип: строка
имя:
тип: строка
требуется:
- я бы
- имя пользователя
Обратите внимание, что требуется
- это атрибут уровня объекта, а не атрибут свойства:
тип: объект
характеристики:
я бы:
тип: целое число
требуется: true # Неправильно!
требуется: # Правильно
- id
Требуется пустой список : []
недействителен.Если все свойства являются необязательными, не указывайте ключевое слово required
.
Свойства только для чтения и только для записи
Вы можете использовать ключевые слова readOnly
и writeOnly
, чтобы пометить определенные свойства как доступные только для чтения или только для записи. Это полезно, например, когда GET возвращает больше свойств, чем используется в POST - вы можете использовать одну и ту же схему как в GET, так и в POST и пометить дополнительные свойства как readOnly
. readOnly
свойств включаются в ответы, но не в запросы, а writeOnly
свойств могут отправляться в запросах, но не в ответах.
тип: объект
характеристики:
я бы:
# Возвращается GET, не используется в POST / PUT / PATCH
тип: целое число
readOnly: правда
имя пользователя:
тип: строка
пароль:
# Используется в POST / PUT / PATCH, не возвращается GET
тип: строка
writeOnly: true
Если свойство readOnly
или writeOnly
включено в список required
, required
влияет только на соответствующую область - только ответы или только запросы.То есть свойства, требуемые только для чтения, применяются только к ответам, а свойства, требуемые только для записи, - только к запросам.
Вложенные объекты
Объект может включать вложенные объекты:
компонентов:
схемы:
Пользователь:
тип: объект
характеристики:
я бы:
тип: целое число
имя:
тип: строка
Контактная информация:
# Значение этого свойства - объект
тип: объект
характеристики:
Эл. адрес:
тип: строка
формат: электронная почта
Телефон:
тип: строка
Вы можете разделить вложенные объекты на несколько схем и использовать $ ref
для ссылки на вложенные схемы:
компонентов:
схемы:
Пользователь:
тип: объект
характеристики:
я бы:
тип: целое число
имя:
тип: строка
Контактная информация:
$ ref: '# / components / schemas / ContactInfo'
Контактная информация:
тип: объект
характеристики:
Эл. адрес:
тип: строка
формат: электронная почта
Телефон:
тип: строка
Объект произвольной формы
Объект произвольной формы (произвольные пары свойство / значение) определяется как:
тип: объект
Это эквивалентно
тип: объект
additionalProperties: true
а также
тип: объект
AdditionalProperties: {}
Количество объектов
Ключевые слова minProperties
и maxProperties
позволяют ограничить количество разрешенных свойств в объекте.Это может быть полезно при использовании дополнительных свойств
или объектов произвольной формы.
тип: объект
minОбъекты собственности: 2
maxProperties: 10
В этом примере {"id": 5, "username": "trillian"}
соответствует схеме, а {"id": 5}
- нет.
Файлы
В отличие от OpenAPI 2.0, Open API 3.0 не имеет файла типа
. Файлы определяются как строки:
тип: строка
формат: двоичный # содержимое двоичного файла
или
тип: строка
формат: байт # содержимое файла в кодировке base64
в зависимости от желаемого метода передачи файлов.Дополнительные сведения см. В разделах «Загрузка файла, составные запросы и ответ, возвращающий файл».
Любой тип
Схема без типа соответствует любому типу данных - числам, строкам, объектам и т. Д. {}
- это сокращенный синтаксис для схемы произвольного типа:
компонентов:
схемы:
AnyValue: {}
Если вы хотите предоставить описание:
компонентов:
схемы:
AnyValue:
описание: Может быть любым значением - строкой, числом, логическим значением, массивом или объектом.
Вышеупомянутое эквивалентно:
компонентов:
схемы:
AnyValue:
любой из:
- тип: строка
- тип: номер
- тип: целое число
- тип: логический
- тип: массив
Предметы: {}
- тип: объект
Если необходимо разрешить значение null
, добавьте nullable: true
:
компонентов:
схемы:
AnyValue:
обнуляемый: true
описание: может быть любым значением, включая `null`.
Не нашли то, что искали? Спросите у сообщества
Нашли ошибку? Сообщите нам
Длинный тип данных VBA (тусклая переменная)
Длинная переменная Тип
Тип данных VBA Long используется для хранения очень длинных значений данных (от -2 147 483 648 до 2 147 483 648). Он может хранить только целые числа (без десятичных знаков).
Чтобы объявить переменную типа Long, используйте оператор Dim (сокращение от Dimension):
Затем, чтобы присвоить значение переменной, просто используйте знак равенства:
Ввод этого в процедуру выглядит так:
Sub lngExample () 'объявить длинную переменную Dim lngA как Long ' заполнить длинную переменную lngA = 30000 'показать окно сообщения MsgBox lngA End Sub |
Если вы запустите приведенный выше код, появится следующее окно сообщения.
LongLong тип данных
Тип данных LongLong доступен только в 64-битной версии Microsoft Office. Если вы используете 32-разрядную версию Office на 64-разрядном компьютере, этот тип данных будет недоступен. Он поддерживает числа в диапазоне от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807.
LongPtr тип данных
LongPtr был введен в VBA для поддержки 64-разрядной версии Microsoft Office. В 32-битной системе он рассматривается как Long, а в 64-битных системах - как LongLong.
Примечание. LongPtr недоступен в Excel 2007 и более ранних версиях.
Программирование на VBA | Генератор кода действительно работает для вас!
Десятичные значения и длинные типы данных
Переменные типа Long не могут хранить десятичные значения. Если вы передадите десятичное число длинным, десятичное число будет округлено, чтобы удалить десятичное.
Следовательно, если вы должны выполнить процедуру, указанную ниже:
Sub LngExampleB () 'объявить длинную переменную Dim lngA как Long ' заполнить длинную переменную lngA = 3524.12 'показать окно сообщения MsgBox lngA End Sub |
Десятичное значение будет округлено в меньшую сторону, возвращая следующее сообщение:
Однако этот код ниже:
Sub LngExampleB () 'объявить длинную переменную Dim lngA как Long ' заполнить длинную переменную lngA = 3524.12 'показать окно сообщения MsgBox lngA End Sub |
Вернет следующее окно сообщения (округление в большую сторону):
Десятичный / двойной тип данных
Если вы хотите сохранить десятичный разряд, вам нужно будет объявить переменную, которая допускает десятичные разряды.Вы можете использовать 3 типа данных: одинарный, двойной или валютный.
Тип данных Single округляет десятичную запятую несколько иначе, чем типы данных double и currency, поэтому для точности предпочтительно использовать двойное к одиночному. Double может иметь до 12 знаков после запятой, в то время как Currency и Single могут иметь до 4 знаков после запятой.
Объявить длинную переменную на модульном или глобальном уровне
В предыдущих примерах мы объявили переменную Long внутри процедуры.Переменные, объявленные с помощью процедуры, могут использоваться только внутри этой процедуры.
Вместо этого вы можете объявить переменные типа Long на модульном или глобальном уровне.
Устали искать примеры кода VBA? Попробуйте AutoMacro!
Уровень модуля
Переменные уровня модуля объявляются в верхней части модулей кода с помощью оператора Dim .
Эти переменные могут использоваться с любой процедурой в этом модуле кода.
Программирование на VBA | Генератор кода действительно работает для вас!
Глобальный уровень
Переменные глобального уровня также объявляются в верхней части модулей кода.Однако вместо использования оператора Dim используйте оператор Public , чтобы указать, что длинная переменная доступна для использования в вашем проекте VBA.
Если вы объявите длинную переменную на уровне модуля, а затем попытаетесь использовать ее в другом модуле, возникнет ошибка.
Однако, если вы использовали ключевое слово Public для объявления переменной long, ошибки не возникнет, и процедура будет работать безупречно.
Формат, долгое время хранящийся как строка
Может быть, в какой-то момент вы захотите преобразовать длинный тип данных в строку - например, дату, или вы можете захотеть отобразить символ валюты.
Для этого вы используете функцию форматирования.
Следующая процедура:
Sub TestLongToString () 'объявить строковую переменную Dim strDate как строку ' объявить long и заполнить значение Dim lngDate как long lngDate = 44055 'преобразовать long в формат строки как дату strDate = Format (lngDate, "дд мммм гггг") 'просмотреть результат Отладка.Печать strDate End Sub |
вернет результат ниже:
и следующую процедуру
Sub TestLongtoCurrencyString () 'объявить строковую переменную Dim strMoney As String ' объявить long и заполнить значение Dim lngValue As Long lngValue = 44055 'преобразовать длинную строку в строку с символ валюты strMoney = Format (lngValue, "$ #, ## 0") 'просмотреть результат MsgBox strMoney End Sub |
вернет такой результат:
Размер типа данных «длинное целое число» (C ++) на различных архитектурах и ОС
Размер «длинного» целого числа зависит от архитектуры и операционной системы.
Компилятор Intel® совместим и взаимодействует с Microsoft * Visual C ++ в Windows * и с gcc * в Linux * и Mac OS X *. Следовательно, размеры основных типов такие же, как у этих компиляторов. Размер «длинного» целого числа, в частности, зависит от операционной системы и целевой архитектуры следующим образом:
OS | Архитектура | Размер «длинного» типа |
Окна | IA-32 | 4 байта |
Intel® 64 | 4 байта | |
Linux | IA-32 | 4 байта |
Intel® 64 | 8 байтов | |
Mac OS | Intel® 64 | 8 байтов |
Следовательно, когда программы, использующие "длинный" целочисленный тип данных, переносятся из IA-32 Linux в Intel® 64 Linux или из Intel® 64 Windows в Intel® 64 Linux, поведение может измениться.(Обратите внимание, что размер указателей, как ожидается, изменится между IA-32 и Intel® 64).
Кроме того, размер «длинного двойника» также зависит от операционной системы.
В Windows * размер по умолчанию составляет 8 байт. В Linux или Mac OS X 10 байтов используются для представления long double, хотя выделенный размер может быть больше (12 байтов в IA-32 Linux; 16 байтов в других местах).
Предложение: Если для вас важно, чтобы целочисленные типы имели одинаковый размер на всех платформах Intel, подумайте о замене long на int или long long.Размер целочисленного типа "int" составляет 4 байта, а размер целочисленного типа "long long" составляет 8 байтов для всех вышеперечисленных комбинаций операционной системы и архитектуры.
В Windows представление «длинного двойника» может быть увеличено до 10 байтов с помощью переключателя командной строки / Qlong-double. Соответствующее выделение памяти составляет 16 байтов.
.