Cpp long int and int

Целочисленные типы

Всем целым константам присваивается тип на основе их значения и способа представления. Для любой целой константы можно принудительно задать тип long , добавив букву l или L в конец константы; для принудительного задания типа unsigned добавьте в конец значения букву u или U . Следует избегать использования буквы l в нижнем регистре, так как ее можно перепутать с цифрой 1. Ниже приведены некоторые формы целых констант long :

/* Long decimal constants */ 10L 79L /* Long octal constants */ 012L 0115L /* Long hexadecimal constants */ 0xaL or 0xAL 0X4fL or 0x4FL /* Unsigned long decimal constant */ 776745UL 778866LU 

Тип, присваиваемый константе, зависит от значения, которое она представляет. Значение константы должно находиться в диапазоне представимых значений для ее типа. Тип константы определяет, какие преобразования выполняются при использовании константы в выражении или при добавлении знака «минус» ( ). В этом списке перечислены правила преобразования целых констант.

  • Для десятичной константы без суффикса используется тип int , long int или unsigned long int . Константе присваивается первый из этих 3 типов, в котором возможно представление значения константы.
  • Восьмеричным или шестнадцатеричным константам без суффиксов присваивается тип int , unsigned int , long int или unsigned long int в зависимости от размера константы.
  • Константам с суффиксом u или U присваивается тип unsigned int или unsigned long int в зависимости от размера.
  • Константам с суффиксом l или L присваивается тип long int или unsigned long int в зависимости от размера.
  • Константам с суффиксом u или U и l или L присваивается тип unsigned long int .
Читайте также:  Working with strings in java

Источник

Диапазоны типов данных

32- и 64-разрядные компиляторы Microsoft C++ распознают типы в таблице далее в этой статье.

Если имя начинается с двух символов подчеркивания ( __ ), тип данных является нестандартным.

Диапазоны, представленные в следующей таблице, включают указанные значения.

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

signed и unsigned — это модификаторы, которые можно использовать с любым целочисленным типом, кроме типа bool . Обратите внимание, что char , signed char и unsigned char — это три разных типа, предназначенных для механизмов, подобных перегрузке и шаблонам.

Размер типов int и unsigned int — 4 байта. Однако переносимый код не должен зависеть от размера int , поскольку языковой стандарт позволяет варьировать его в зависимости от реализации.

C и C++ в Visual Studio также поддерживают целочисленные типы с указанием размера. Дополнительные сведения см. в разделах __int8, __int16, __int32, __int64 и Integer Limits.

Дополнительные сведения об ограничениях размеров каждого типа см. в разделе Встроенные типы.

Диапазон перечисляемых типов зависит от контекста языка и указанных флажков компилятора. Дополнительные сведения см. в статьях Объявления перечислений C и Объявления перечислений C++.

Источник

Встроенные типы (C++)

Встроенные типы (также называемые фундаментальными типами) задаются стандартом языка C++ и встроены в компилятор. Встроенные типы не определены ни в одном файле заголовка. Встроенные типы делятся на три main категории: целочисленный, с плавающей запятой и void. Целочисленные типы представляют целые числа. Типы с плавающей запятой могут указывать значения, которые могут иметь дробные части. Большинство встроенных типов рассматриваются компилятором как отдельные типы. Однако некоторые типы являются синонимами или рассматриваются компилятором как эквивалентные типы.

Тип void

Тип void описывает пустой набор значений. Переменная типа void не может быть указана. Тип void используется в основном для объявления функций, которые не возвращают значения, или для объявления универсальных указателей на нетипизированные или произвольно типизированные данные. Любое выражение можно явно преобразовать или привести к типу void . Однако такие выражения можно использовать только в следующих операторах и операндах:

  • в операторе выражения (Дополнительные сведения см. в разделе Выражения.)
  • в левом операнде оператора запятой (Дополнительные сведения см. в разделе Оператор-запятая.)
  • во втором и третьем операндах условного оператора ( ? : ). (Дополнительные сведения см. в разделе Выражения с условным оператором.)

std::nullptr_t

Ключевое слово nullptr является константой типа null-указателя , которая может быть преобразована std::nullptr_t в любой необработанный тип указателя. Для получения дополнительной информации см. 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- для создания wchar_t определения типа для unsigned short . __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 бит в ширину. Стандарт задает связь размера между целочисленными типами:

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

При int указании модификаторов размера , ключевое слово может быть опущен signed unsigned . Модификаторы и int тип, если они присутствуют, могут отображаться в любом порядке. Например, short unsigned и unsigned int short ссылаются на тот же тип.

Синонимы целочисленных типов

Следующие группы типов считаются синонимами компилятором:

Типы целых чисел, относящиеся к корпорации Майкрософт, включают типы определенной ширины __int8 , __int16 , __int32 и __int64 . Эти типы могут использовать модификаторы signed и unsigned . Тип данных __int8 аналогичен типу char , __int16 — типу short , __int32 — типу int , а __int64 — типу long long .

Размеры встроенных типов

Большинство встроенных типов имеют размеры, определенные реализацией. В следующей таблице приведен объем хранилища, необходимый для встроенных типов в Microsoft C++. В частности, long составляет 4 байта даже в 64-разрядных операционных системах.

Тип Размер
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 байт

Сводка по диапазонам значений каждого типа см. в разделе Диапазоны типов данных .

Дополнительные сведения о преобразовании типов см. в разделе Стандартные преобразования.

Источник

Data Type Ranges

The Microsoft C++ 32-bit and 64-bit compilers recognize the types in the table later in this article.

If its name begins with two underscores ( __ ), a data type is non-standard.

The ranges that are specified in the following table are inclusive-inclusive.

Depending on how it’s used, a variable of __wchar_t designates either a wide-character type or multibyte-character type. Use the L prefix before a character or string constant to designate the wide-character-type constant.

signed and unsigned are modifiers that you can use with any integral type except bool . Note that char , signed char , and unsigned char are three distinct types for the purposes of mechanisms like overloading and templates.

The int and unsigned int types have a size of four bytes. However, portable code should not depend on the size of int because the language standard allows this to be implementation-specific.

C/C++ in Visual Studio also supports sized integer types. For more information, see __int8, __int16, __int32, __int64 and Integer Limits.

For more information about the restrictions of the sizes of each type, see Built-in types.

The range of enumerated types varies depending on the language context and specified compiler flags. For more information, see C Enumeration Declarations and Enumerations.

Источник

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