Диапазоны типов данных | Microsoft Learn
Twitter LinkedIn Facebook Адрес электронной почты
- Статья
- Чтение занимает 2 мин
32-разрядные и 64-разрядные компиляторы Microsoft C++ распознают типы в таблице далее в этой статье.
int
(unsigned int
)__int8
(unsigned __int8
)__int16
(unsigned __int16
)__int32
(unsigned __int32
)__int64
(unsigned __int64
)short
(unsigned short
)long
(unsigned long
)long long
(unsigned long long
)
Если имя начинается с двух символов подчеркивания (__
), тип данных является нестандартным.
Диапазоны, представленные в следующей таблице, включают указанные значения.
Имя типа | Байты | Другие имена | Диапазон значений |
---|---|---|---|
int | 4 | signed | От -2 147 483 648 до 2 147 483 647 |
unsigned int | 4 | unsigned | От 0 до 4 294 967 295 |
__int8 | 1 | char | От -128 до 127 |
unsigned __int8 | 1 | unsigned char | От 0 до 255 |
__int16 | 2 | short , short int , signed short int | От -32 768 до 32 767 |
unsigned __int16 | 2 | unsigned short , unsigned short int | От 0 до 65 535 |
__int32 | 4 | signed , signed int , int | От -2 147 483 648 до 2 147 483 647 |
unsigned __int32 | 4 | unsigned , unsigned int | От 0 до 4 294 967 295 |
__int64 | 8 | long long , signed long long | От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
unsigned __int64 | 8 | unsigned long long | От 0 до 18 446 744 073 709 551 615 |
bool | 1 | нет | false либо true |
char | 1 | нет | По умолчанию от -128 до 127 От 0 до 255 при компиляции с помощью |
signed char | 1 | нет | От -128 до 127 |
unsigned char | 1 | нет | От 0 до 255 |
short | 2 | short int , signed short int | От -32 768 до 32 767 |
unsigned short | 2 | unsigned short int | От 0 до 65 535 |
long | 4 | long int , signed long int | От -2 147 483 648 до 2 147 483 647 |
unsigned long | 4 | unsigned long int | От 0 до 4 294 967 295 |
long long | 8 | none (но эквивалентно __int64 ) | От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
unsigned long long | 8 | none (но эквивалентно unsigned __int64 ) | От 0 до 18 446 744 073 709 551 615 |
enum | непостоянно | нет | |
float | 4 | нет | 3,4E +/- 38 (7 знаков) |
double | 8 | нет | 1,7E +/- 308 (15 знаков) |
long double | то же самое, что и double | нет | То же, что double |
wchar_t | 2 | __wchar_t | От 0 до 65 535 |
В зависимости от характера использования переменная типа __wchar_t
обозначает расширенный символьный или многобайтовый символьный тип. Чтобы указать константу расширенного символьного типа, перед символьной или строковой константой следует использовать префикс
.
signed
и unsigned
— это модификаторы, которые можно использовать с любым целочисленным типом, кроме типа bool
. Обратите внимание, что char
, signed char
и unsigned char
— это три разных типа, предназначенных для механизмов, подобных перегрузке и шаблонам.
Размер типов int
и unsigned int
— 4 байта. Однако переносимый код не должен зависеть от размера int
, поскольку языковой стандарт позволяет варьировать его в зависимости от реализации.
C и C++ в Visual Studio также поддерживают целочисленные типы с указанием размера. Дополнительные сведения см. в разделе __int8, __int16, __int32, __int64
и ограничениях целых чисел.
Дополнительные сведения об ограничениях размеров каждого типа см. в разделе «Встроенные типы».
Диапазон перечисляемых типов зависит от контекста языка и указанных флажков компилятора. Дополнительные сведения см. в статьях Объявления перечислений C и Объявления перечислений C++.
Ключевые слова
Встроенные типы
НОУ ИНТУИТ | Лекция | Типы данных в языке С++
< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Аннотация: В лекции рассматриваются понятие типов данных в языках программирования, приводится классификация типов данных в С++, излагаются особенности представления базовых типов и операций над ними, рекомендации и правила выполнения операции преобразования базовых типов в С++.
Ключевые слова: представление, пользовательский тип, переменная, вычисление выражения, тип данных, объект, проверка допустимости, язык программирования, базовый тип, стандарт языка, сложный тип, производный тип, спецификатор, диапазон, short, sign, unsigned, базовый тип данных, integer, описание переменной, время выполнения, определение, асимметрия, целочисленный тип, значение, операции, декремент, инкремент, целый тип, восьмеричная система счисления, точность, бит, экспонента, мантисса, таблица кодировки, таблица символов, ASCII, байт, Unicode, константы, слово, истина, ложь, единица, логический тип, синтаксис, именованная константа, память, параметр функции, нетипизированный указатель, определение функции, операция приведения, ENUM, сообщение об ошибке, операнд, приведение типов, тип переменной, явное преобразование, потеря информации, hour, автоматическое преобразование, знаковый бит, потеря точности, производный тип данных, управляющая последовательность, входные данные, числовой тип, вещественное число, линейная программа, высказывание, mx/s, символьные типы
intuit.ru/2010/edi»>Цель лекции: изучить классификацию типов и их внутреннее представление в языке С++, научиться работать со стандартными и пользовательскими типами.Основная цель любой программы состоит в обработке каких-либо данных, например, чисел или текстов. Данные могут быть различного вида или типа и, в зависимости от этого, с ними можно выполнять разные действия.
В любом языке программирования каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип данных.
Тип данных – это множество допустимых значений, которые может принимать тот или иной объект, а также множество допустимых операций, которые применимы к нему. В современном понимании тип также зависит от внутреннего представления информации.
Таким образом, данные различных типов хранятся и обрабатываются по-разному. Тип данных определяет:
- внутреннее представление данных в памяти компьютера;
- объем памяти, выделяемый под данные;
- множество (диапазон) значений, которые могут принимать величины этого типа;
- операции и функции, которые можно применять к данным этого типа.
Исходя из данных характеристик, необходимо определять тип каждой величины, используемой в программе для представления объектов. Обязательное описание типа позволяет компилятору производить проверку допустимости различных конструкций программы. От выбора типа величины зависит последовательность машинных команд, построенная компилятором.
Классификация типов данных в С++
Современные языки программирования, как правило, могут иметь набор простых типов, являющихся встроенными в данный язык программирования, и средства для создания производных типов.
Объектно-ориентированные языки программирования позволяют определять типы класса.
Реализация простых типов данных заключается в способе представления значений данного типа в компьютере и в наборе операций, поддерживаемых для данного типа.
Тип данных определяет размер памяти, выделяемой под переменную данного типа при ее создании. Язык программирования C++ поддерживает следующие типы данных (рис. 1.1).
- Базовые типы. Базовые типы предопределены стандартом языка, указываются зарезервированными ключевыми словами и характеризуются одним значением. Их не надо определять и их нельзя разложить на более простые составляющие без потери сущности данных. Базовые типы объектов создают основу для построения более сложных типов.
- Производные типы. Производные типы задаются пользователем, и переменные этих типов создаются как с использованием базовых типов, так и типов классов.
- Типы класса. Экземпляры этих типов называются объектами.
Рис. 1.1. Типы данных в языке С++
Существует четыре спецификатора типа данных, уточняющих внутреннее представление и диапазон базовых типов:
short (короткий) | длина |
long (длинный) | |
signed (знаковый) | знак (модификатор) |
unsigned (беззнаковый) |
Целочисленный (целый) тип данных (тип int)
Переменные данного типа применяются для хранения целых чисел (integer). Описание переменной, имеющей тип int, сообщает компилятору, что он должен связать с идентификатором (именем) переменной количество памяти, достаточное для хранения целого числа во время выполнения программы.
Границы диапазона целых чисел, которые можно хранить в переменных типа int, зависят от конкретного компьютера, компилятора и операционной системы (от реализации). Для 16-разрядного процессора под него отводится 2 байта, для 32-разрядного – 4 байта.
Для внутреннего представления знаковых целых чисел характерно определение знака по старшему биту (0 – для положительных, 1 – для отрицательных). Поэтому число 0 во внутреннем представлении относится к положительным значениям. Следовательно, наблюдается асимметрия границ целых промежутков.
В целочисленных типах для всех значений определены следующий и предыдущий элементы. Для максимального следующим значением будет являться минимальное в этом же типе, предыдущее для минимального определяется как максимальное значение. То есть целочисленный диапазон условно можно представить сомкнутым в кольцо. Поэтому определены операции декремента для минимального и инкремента для максимального значений в целых типах.
От количества отводимой под объект памяти зависит множество допустимых значений, которые может принимать объект:
- short int – занимает 2 байта, следовательно, имеет диапазон от –32 768 до +32 767;
- int – занимает 4 байта, следовательно, имеет диапазон от –2 147 483 648 до +2 147 483 647; intuit.ru/2010/edi»> long int – занимает 4 байта, следовательно, имеет диапазон от –2 147 483 648 до +2 147 483 647;
- long long int – занимает 8 байтов, следовательно, имеет диапазон от –9 223 372 036 854 775 808 до +9 223 372 036 854 775 807.
Модификаторы signed и unsigned также влияют на множество допустимых значений, которые может принимать объект:
- unsigned short int – занимает 2 байта, следовательно, имеет диапазон от 0 до 65 535;
- unsigned int – занимает 4 байта, следовательно, имеет диапазон от 0 до 4 294 967 295;
- unsigned long int – занимает 4 байта, следовательно, имеет диапазон от 0 до 4 294 967 295;
- unsigned long long int – занимает 8 байтов, следовательно, имеет диапазон от 0 до 18 446 744 073 709 551 615.
Например:
unsigned int b; signed int a; int c; unsigned d; signed f;
Приведем несколько правил, касающихся записи целочисленных значений в исходном тексте программ.
- Нельзя пользоваться десятичной точкой. Значения 26 и 26.0 одинаковы, но 26.0 не является значением типа int.
- Нельзя пользоваться запятыми в качестве разделителей тысяч. Например, число 23,897 следует записывать как 23897.
- Целые значения не должны начинаться с незначащего нуля. Он применяется для обозначения восьмеричных или шестнадцатеричных чисел, так что компилятор будет рассматривать значение 011 как число 9 в восьмеричной системе счисления.
На практике рекомендуется использовать основной целый тип, то есть тип int. Данные основного целого типа практически всегда обрабатываются быстрее, чем данные других целых типов. Короткий тип short подойдет для хранения больших массивов чисел с целью экономии памяти при условии, что значения элементов не выходят за предельные границы для этих типов. Длинные типы необходимы в ситуации, когда не достаточно типа int.
Вещественный (данные с плавающей точкой) тип данных (типы float и double)
Для хранения вещественных чисел применяются типы данных float (с одинарной точностью) и double (с двойной точностью). Смысл знаков «+» и «-» для вещественных типов совпадает с целыми. Последние незначащие нули справа от десятичной точки игнорируются. Поэтому варианты записи +523.5, 523.5 и 523.500 представляют одно и то же значение.
Для представления вещественных чисел используются два формата:
В большинстве случаев используется тип double, он обеспечивает более высокую точность, чем тип float. Максимальную точность и наибольший диапазон чисел достигается с помощью типа long double.
Величина с модификатором типа float занимает 4 байта. Из них 1 бит отводится для знака, 8 бит для избыточной экспоненты и 23 бита для мантиссы. Отметим, что старший бит мантиссы всегда равен 1, поэтому он не заполняется, в связи с этим диапазон модулей значений переменной с плавающей точкой приблизительно равен от 3.14E–38 до 3.14E+38.
Величина типа double занимает 8 байтов в памяти. Ее формат аналогичен формату float. Биты памяти распределяются следующим образом: 1 бит для знака, 11 бит для экспоненты и 52 бита для мантиссы. С учетом опущенного старшего бита мантиссы диапазон модулей значений переменной с двойной точностью равен от 1.7E–308 до 1.7E+308.
Величина типа long double аналогична типу double.
Например:
float a, b; double x, y; long double z;
Дальше >>
< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
диапазонов типов данных | Microsoft Узнайте
Обратная связь Редактировать
Твиттер LinkedIn Фейсбук Эл. адрес
- Статья
- 2 минуты на чтение
32-разрядные и 64-разрядные компиляторы Microsoft C++ распознают типы, указанные в таблице далее в этой статье.
целое число
(целое число без знака
)__int8
(без знака __int8
)__int16
(без знака __int16
)__int32
(без знака __int32
)__int64
(без знака __int64
)короткий
(короткий без знака
)длинный
(длинный без знака
)длинный длинный
(беззнаковый длинный длинный
)
Если его имя начинается с двух знаков подчеркивания ( __
), тип данных нестандартен.
Диапазоны, указанные в следующей таблице, включают включительно.
Название типа | байт | Другие названия | Диапазон значений |
---|---|---|---|
внутр. | 4 | подписанный | -2 147 483 648 до 2 147 483 647 |
целое число без знака | 4 | без знака | от 0 до 4 294 967 295 |
__int8 | 1 | символ | от -128 до 127 |
без знака __int8 | 1 | беззнаковый символ | от 0 до 255 |
__int16 | 2 | короткий , короткий целый , подписанный короткий целый | от -32 768 до 32 767 |
без знака __int16 | 2 | беззнаковое короткое , беззнаковое короткое целое | от 0 до 65 535 |
__int32 | 4 | подписанный , подписанный внутр. , внутр. | -2 147 483 648 до 2 147 483 647 |
без знака __int32 | 4 | без знака , целое число без знака | от 0 до 4 294 967 295 |
__int64 | 8 | длинный длинный , подписанный длинный длинный | -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
без знака __int64 | 8 | без знака длинный длинный | от 0 до 18 446 744 073 709 551 615 |
логический | 1 | нет | ложь или правда |
символ | 1 | нет | от -128 до 127 по умолчанию от 0 до 255 при компиляции с использованием |
знаковый символ | 1 | нет | от -128 до 127 |
беззнаковый символ | 1 | нет | от 0 до 255 |
короткий | 2 | короткое целое , подписанное короткое целое | от -32 768 до 32 767 |
короткий без знака | 2 | короткое целое без знака | от 0 до 65 535 |
длинный | 4 | длинное целое , подписанное длинное целое | -2 147 483 648 до 2 147 483 647 |
длинный без знака | 4 | длинное целое без знака | от 0 до 4 294 967 295 |
длинный длинный | 8 | нет (но эквивалентно __int64 ) | -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
без знака длинный длинный | 8 | нет (но эквивалентно unsigned __int64 ) | от 0 до 18 446 744 073 709 551 615 |
перечисление | варьируется | нет | |
поплавок | 4 | нет | 3. 4E +/- 38 (7 цифр) |
двойной | 8 | нет | 1.7E +/- 308 (15 цифр) |
длинный двойной | аналогично двойной | нет | То же, что и двойной |
wchar_t | 2 | __wchar_t | от 0 до 65 535 |
В зависимости от того, как она используется, переменная __wchar_t
обозначает либо широкосимвольный, либо многобайтовый тип символов. Используйте префикс L
перед символьной или строковой константой для обозначения широкосимвольной константы.
signed
и unsigned
— это модификаторы, которые можно использовать с любым целочисленным типом, кроме bool
. Обратите внимание, что char
, signed char
и unsigned char
являются тремя различными типами для таких механизмов, как перегрузка и шаблоны.
Типы int
и unsigned int
имеют размер четыре байта. Однако переносимый код не должен зависеть от размера int
, потому что стандарт языка допускает, что это зависит от реализации.
C/C++ в Visual Studio также поддерживает целочисленные типы с размером. Дополнительные сведения см. в разделе __int8, __int16, __int32, __int64
и целочисленные ограничения.
Дополнительные сведения об ограничениях размеров каждого типа см. в разделе Встроенные типы.
Диапазон перечисляемых типов зависит от контекста языка и указанных флагов компилятора. Дополнительные сведения см. в разделе Объявления и перечисления C.
См.
также Ключевые слова
Встраиваемые модели
Обратная связь
Отправить и просмотреть отзыв для
Этот продукт Эта страница
Просмотреть все отзывы о странице
каков диапазон целого числа со знаком? — общий
скартик
#1
Каков диапазон подписанного целого, подписанного длинного целого, подписанного длинного длинного целого в gcc?
Также, если возможно, скажите мне спецификаторы формата?
пиюкр
#2
это может помочь:
http://msdn. microsoft.com/en-IN/library/s3f49ktz.aspx
2 лайка
28 марта 2013 г., 18:49
#3
signed char
8-битный тип данных signed char может содержать целые значения в диапазоне от -128 до 127.
unsigned char 8-битный тип данных char без знака может содержать целые значения в диапазоне от 0 до 255. уголь В зависимости от вашей системы тип данных char определяется как имеющий тот же диапазон, что и тип данных signed char или unsigned char (однако это три разных типа). По соглашению вы должны использовать тип данных char специально для хранения символов ASCII (таких как `m'), включая управляющие последовательности (такие как `\n'). короткий внутренний 16-битный тип данных short int может содержать целые значения в диапазоне от −32 768 до 32 767. Вы также можете обращаться к этому типу данных как к короткому, короткому со знаком или короткому со знаком. беззнаковое короткое целое 16-битный тип данных unsigned short int может содержать целые значения в диапазоне от 0 до 65 535. Вы также можете ссылаться на этот тип данных как на unsigned short. инт 32-битный тип данных int может содержать целые значения в диапазоне от -2 147 483 648 до 2 147 483 647. Вы также можете ссылаться на этот тип данных как на signt int или signed. беззнаковое целое 32-битный тип данных unsigned int может содержать целые значения в диапазоне от 0 до 4,29.4 967 295. Вы также можете обращаться к этому типу данных просто как к беззнаковому. длинный внутренний 32-битный тип данных long int может содержать целые значения в диапазоне от -2 147 483 648 до 2 147 483 647. (В зависимости от вашей системы этот тип данных может быть 64-битным, и в этом случае его диапазон идентичен диапазону данных типа long long int.) Вы также можете ссылаться на этот тип данных как long, signed long int или signed длинная. беззнаковое длинное целое 32-битный тип данных unsigned long int может содержать целые значения в диапазоне от 0 до 4,29. 4 967 295. (В зависимости от вашей системы этот тип данных может быть 64-разрядным, и в этом случае его диапазон идентичен диапазону данных типа unsigned long long int.) Вы также можете называть этот тип данных unsigned long. длинный длинный внутренний 64-битный тип данных long long int может содержать целые значения в диапазоне от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Вы также можете обращаться к этому типу данных как к long long, со знаком long long int или со знаком long long. Этот тип не является частью C89, но одновременно является частью C9.9 и расширение GNU C. беззнаковое длинное длинное целое 64-битный тип данных unsigned long long int может содержать целые значения в диапазоне от 0 до 18 446 744 073 709 551 615. Вы также можете ссылаться на этот тип данных как на unsigned long long. Этот тип не является частью C89, но одновременно является частью C99 и расширением GNU C.
4 лайка
пиюкр