Встроенные типы (C++)
Встроенные типы (также называемые фундаментальными типами) задаются стандартом языка C++ и встроены в компилятор. Встроенные типы не определены в файле заголовка. Встроенные типы делятся на три основные категории: целочисленные, с плавающей запятой и void. Целочисленные типы представляют целые числа. Типы с плавающей запятой могут указывать значения, которые могут содержать дробные части. Большинство встроенных типов рассматриваются как отдельные типы компилятором. Однако некоторые типы являются синонимами или рассматриваются как эквивалентные типы компилятором.
Тип void
Тип void
описывает пустой набор значений. Переменная типа void
не может быть указана. Тип void
используется в основном для объявления функций, которые не возвращают значения или объявляют универсальные указатели на нетипизированные или произвольные типизированные данные. Любое выражение можно явно преобразовать или привести к типу void
. Однако такие выражения можно использовать только в следующих операторах и операндах:
в операторе выражения (Дополнительные сведения см. в разделе Выражения.)
в левом операнде оператора запятой (Дополнительные сведения см. в разделе Оператор запятой.)
во втором и третьем операндах условного оператора (
? :
). (Дополнительные сведения см. в разделе Выражения с условным оператором.)
std::nullptr_t
Ключевое слово nullptr
является константой std::nullptr_t
типа null-указателя, которая преобразуется в любой необработанный тип указателя. Дополнительные сведения см. в разделе nullptr
.
Тип Boolean
Тип bool
может иметь значения true
и false
. Размер bool
типа зависит от реализации. Дополнительные сведения о реализации см. в разделе "Размеры встроенных типов ".
Символьные типы
Тип char
— это тип представления символов, который эффективно кодирует элементы базового набора символов выполнения. Компилятор C++ обрабатывает переменные типа char
, signed char
и unsigned char
как переменные разных типов.
Корпорация Майкрософт: переменные типа char
по умолчанию действуют как int
будто из типа signed char
, если /J
только не используется параметр компиляции. В этом случае они рассматриваются как тип unsigned char
и повышаются до int
без расширения знака.
Переменная типа wchar_t
— это расширенный или многобайтовый тип символов. L
Используйте префикс перед символом или строковым литералом, чтобы указать тип расширенных символов.
Корпорация Майкрософт: по умолчанию wchar_t
— это собственный тип, но вы можете использовать /Zc:wchar_t-
его для unsigned short
определения wchar_t
типа. __wchar_t
— синоним для машинного типа wchar_t
для систем Майкрософт.
Тип char8_t
используется для представления символов UTF-8. Он имеет то же представление, что unsigned char
и , но рассматривается как отдельный тип компилятором. Тип char8_t
новый в C++20. Корпорация Майкрософт: для использования char8_t
требуется /std:c++20
параметр компилятора или более поздней версии (например /std:c++latest
, ).
Тип char16_t
используется для представления символов UTF-16. Оно должно быть достаточно большим, чтобы представить любую единицу кода UTF-16. Он рассматривается как отдельный тип компилятором.
Тип char32_t
используется для представления символов UTF-32. Оно должно быть достаточно большим, чтобы представить любую единицу кода UTF-32. Он рассматривается как отдельный тип компилятором.
Типы с плавающей запятой
Типы с плавающей запятой используют представление IEEE-754 для обеспечения приближения дробных значений по широкому диапазону величин. В следующей таблице перечислены типы с плавающей запятой в C++ и относительные ограничения на размеры типов с плавающей запятой. Эти ограничения являются обязательными стандартом C++ и не зависят от реализации Майкрософт. Абсолютный размер встроенных типов с плавающей запятой не указан в стандарте.
Тип | Содержимое |
---|---|
float |
Тип float является наименьшим типом с плавающей запятой в C++. |
double |
double — это тип с плавающей запятой, размер которого больше или равен размеру типа float , но меньше или равен размеру типа long double . |
long double |
long double — это тип с плавающей запятой, размер которого больше или равен размеру типа double . |
Корпорация Майкрософт: представление long double
и double
идентично. long double
Однако и double
рассматриваются как отдельные типы компилятором. Компилятор Microsoft C++ использует представления с плавающей запятой 4 и 8-байтов IEEE-754. Дополнительные сведения см. в представлении с плавающей запятой IEEE.
Целочисленные типы
Тип int
— базовый целочисленный тип по умолчанию. Он может представлять все целые числа по определенному диапазону реализации.
Целочисленное представление со знаком — это одно из них, которое может содержать как положительные, так и отрицательные значения. Он используется по умолчанию или signed
при наличии модификатора ключевое слово. Модификатор unsigned
ключевое слово указывает неподписаемое представление, которое может содержать только неотрицательных значений.
Модификатор размера указывает ширину в битах используемого целочисленного представления. Язык поддерживает short
и long
long long
модификаторы. Тип short
должен быть не менее 16 бит ширины. Тип long
должен быть не менее 32 битов ширины. Тип должен быть по крайней long long
мере 64-разрядным. Стандарт задает связь размера между целочисленными типами:
1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
Реализация должна поддерживать как минимальные требования к размеру, так и отношение размера для каждого типа. Однако фактические размеры могут отличаться между реализацией. Дополнительные сведения о реализации см. в разделе "Размеры встроенных типов ".
Ключевое слово int
могут быть опущены при signed
unsigned
указании модификаторов размера или размера. Модификаторы и int
тип, если они присутствуют, могут отображаться в любом порядке. Например, short unsigned
и unsigned int short
ссылаться на тот же тип.
Синонимы целочисленного типа
Следующие группы типов считаются синонимами компилятора:
short
,short int
,signed short
,signed short int
unsigned short
,unsigned short int
int
,signed
,signed int
unsigned
,unsigned int
long
,long int
,signed long
,signed long int
unsigned long
,unsigned long int
long long
,long long int
,signed long long
,signed long long int
unsigned long long
,unsigned long long int
Типы целых чисел, зависящие от Майкрософт, включают определенные ширины__int8
, __int16
__int32
а также __int64
типы. Эти типы могут использовать signed
модификаторы и unsigned
модификаторы. Тип данных __int8
аналогичен типу char
, __int16
— типу short
, __int32
— типу int
, а __int64
— типу long long
.
Размеры встроенных типов
Большинство встроенных типов имеют определенные реализацией размеры. В следующей таблице перечислены объем хранилища, необходимый для встроенных типов в Microsoft C++. В частности, long
4 байта даже в 64-разрядных операционных системах.
Тип | Size |
---|---|
bool , char , char8_t , unsigned char , signed char , __int8 |
1 байт |
char16_t , __int16 , short , unsigned short , wchar_t , __wchar_t |
2 байта |
char32_t , float , __int32 , int , unsigned int , long , unsigned long |
4 байта |
double , __int64 , long double , long long , unsigned long long |
8 байт |
Сведения о диапазоне типов данных см. в сводке по диапазону значений каждого типа.
Дополнительные сведения о преобразовании типов см. в разделе "Стандартные преобразования".
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по