Пределы целых чисел в C и C++

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

Блок, относящийся только к системам Microsoft

Ограничения для целочисленных типов в C и C++ представлены в следующей таблице. Эти ограничения заданы в стандартном файле заголовка C <limits.h>. Стандартный файл заголовка C++ <limits> содержит <climits>, который включает в себя <limits.h>.

В Microsoft C также допускается объявление целочисленных переменных с указанием размера, которые относятся к целочисленным типам с размером 8, 16, 32 или 64 бит. Дополнительные сведения о них см. в статье Целочисленные типы с указанием размера.

Ограничения для целочисленных констант

КонстантаЗначениеЗначение
CHAR_BITКоличество битов в наименьшей переменной, которая не является битовым полем.8
SCHAR_MINМинимальное значение для переменной типа signed char.–128
SCHAR_MAXМаксимальное значение для переменной типа signed char.127
UCHAR_MAXМаксимальное значение для переменной типа
unsigned char
.
255 (0xff)
CHAR_MINМинимальное значение для переменной типа char.–128 (или 0, если используется параметр /J)
CHAR_MAXМаксимальное значение для переменной типа char.–127 (или 255, если используется параметр /J)
MB_LEN_MAXМаксимальное количество байтов в многосимвольной константе.5
SHRT_MINМинимальное значение для переменной типа short
.
-32768
SHRT_MAXМаксимальное значение для переменной типа short.32767
USHRT_MAXМаксимальное значение для переменной типа unsigned short.65 535 (0xffff)
INT_MINМинимальное значение для переменной типа int.-2147483647 — 1
INT_MAXМаксимальное значение для переменной типа int
.
2147483647
UINT_MAXМаксимальное значение для переменной типа unsigned int.4 294 967 295 (0xffffffff)
LONG_MINМинимальное значение для переменной типа long.-2147483647 — 1
LONG_MAXМаксимальное значение для переменной типа long.2147483647
ULONG_MAXМаксимальное значение для переменной типа unsigned long.4 294 967 295 (0xffffffff)
LLONG_MINМинимальное значение для переменной типа
long long
.
–9 223 372 036 854 775 807 – 1
LLONG_MAXМаксимальное значение для переменной типа long long.9 223 372 036 854 775 807
ULLONG_MAXМаксимальное значение для переменной типа unsigned long long.18 446 744 073 709 551 615 (0xffffffffffffffff)

Если значение превышает максимально возможное представление целочисленного типа, компилятор Microsoft выдает ошибку.

Завершение блока, относящегося только к системам Майкрософт

См. также

Целочисленные константы в C

Пределы целых чисел | Microsoft Learn

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

Только для систем Майкрософт

Ограничения для целочисленных типов представлены в следующей таблице.

Макросы препроцессора для этих ограничений также определяются при включении стандартных интерфейсов файла <заголовков>.

Ограничения для целочисленных констант

КонстантаЗначениеЗначение
CHAR_BITКоличество битов в наименьшей переменной, которая не является битовым полем.8
SCHAR_MINМинимальное значение для переменной типа signed char.–128
SCHAR_MAXМаксимальное значение для переменной типа signed char.
127
UCHAR_MAXМаксимальное значение для переменной типа unsigned char.255 (0xff)
CHAR_MINМинимальное значение для переменной типа char.-128; 0, если /J используется параметр
CHAR_MAXМаксимальное значение для переменной типа char.127; 255, если /J используется параметр
MB_LEN_MAX
Максимальное количество байтов в многосимвольной константе.5
SHRT_MINМинимальное значение для переменной типа short.-32768
SHRT_MAXМаксимальное значение для переменной типа short.32767
USHRT_MAXМаксимальное значение для переменной типа unsigned short.65 535 (0xffff)
INT_MINМинимальное значение для переменной типа int.-2147483648
INT_MAXМаксимальное значение для переменной типа
int
.
2147483647
UINT_MAXМаксимальное значение для переменной типа unsigned int.4 294 967 295 (0xffffffff)
LONG_MINМинимальное значение для переменной типа long.-2147483648
LONG_MAXМаксимальное значение для переменной типа long.2147483647
ULONG_MAX
Максимальное значение для переменной типа unsigned long.4 294 967 295 (0xffffffff)
LLONG_MINМинимальное значение для переменной типа long long-9223372036854775808
LLONG_MAXМаксимальное значение для переменной типа long long9223372036854775807
ULLONG_MAXМаксимальное значение для переменной типа unsigned long long18446744073709551615 (0xffffffffffffffff)

Если значение превышает максимально возможное представление целочисленного типа, компилятор Microsoft выдает ошибку.

См. также раздел

Плавающие ограничения

целочисленных пределов | Microsoft Узнайте

Редактировать

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья
  • 2 минуты на чтение

Специально для Microsoft

Ограничения для целочисленных типов перечислены в следующей таблице. Макросы препроцессора для этих ограничений также определяются при включении стандартного заголовочного файла .

Ограничения на целочисленные константы

Константа Значение Значение
CHAR_BIT Количество битов в наименьшей переменной, которая не является битовым полем. 8
ШАР_МИН Минимальное значение для переменной типа signed char . -128
SCHAR_MAX Максимальное значение для переменной типа signed char . 127
УЧАР_МАКС Максимальное значение для переменной типа unsigned char . 255 (0xff)
СИМВОЛ_МИН Минимальное значение переменной типа char . -128; 0, если используется опция /J
СИМВ_МАКС Максимальное значение переменной типа char . 127; 255, если используется опция /J
МБ_LEN_МАКС Максимальное количество байтов в многосимвольной константе. 5
SHRT_MIN Минимальное значение для переменной типа короткая . -32768
SHRT_MAX Максимальное значение для переменной типа короткая . 32767
USHRT_MAX Максимальное значение для переменной типа unsigned short . 65535 (0xffff)
INT_MIN Минимальное значение для переменной типа int . -2147483648
INT_MAX Максимальное значение переменной типа int . 2147483647
UINT_MAX Максимальное значение для переменной типа целое число без знака . 4294967295 (0xffffffff)
LONG_MIN Минимальное значение переменной типа long . -2147483648
LONG_MAX Максимальное значение переменной типа long . 2147483647
ULONG_MAX Максимальное значение переменной типа unsigned long . 4294967295 (0xffffffff)
LLONG_MIN Минимальное значение для переменной типа long long -9223372036854775808
LLONG_MAX Максимальное значение для переменной типа long long 9223372036854775807
ULLONG_MAX Максимальное значение переменной типа unsigned long long 18446744073709551615 (0xffffffffffffffffff)

Если значение превышает максимальное целочисленное представление, компилятор Microsoft выдает ошибку.

См. также

Плавающие пределы

Обратная связь

Просмотреть все отзывы о странице

math. Каково максимальное целочисленное значение JavaScript, к которому число может перейти без потери точности?

Многие предыдущие ответы показали 99254740992 === 99254740992 + 1 — это верно , чтобы убедиться, что 9 007 199 254 740 991 — максимальное и безопасное целое число.

Но что, если мы продолжим накопление:

 ввод: 99254740992 + 1 вывод: 99254740992 // ожидается: 99254740993
ввод: 99254740992 + 2 вывод: 99254740994 // ожидается: 99254740994
ввод: 99254740992 + 3 вывод: 99254740996 // ожидается: 99254740995
ввод: 99254740992 + 4 вывод: 99254740996 // ожидается: 99254740996
 

Мы видим, что среди чисел больше 952 => 1 0000 —- 0000. 53 => 1 0000 —- 0001. * 2 |— 52 бита —| |— 52 бита —|

Следуя этой схеме, когда число превышает 9 007,199 254,740,992 * 2 = 18,014,398,509,481,984 только в 4 раза. ввод: 18014398509481984 + 2 вывод: 18014398509481984 // ожидается: 18014398509481986 ввод: 18014398509481984 + 3 вывод: 18014398509481984 // ожидается: 18014398509481987 ввод: 18014398509481984 + 4 вывод: 18014398509481988 // ожидается: 180143951)

 ввод: 2251799813685246,75 вывод: 2251799813685246,8 // ожидается: 2251799813685246,75
ввод: 2251799813685246.25 вывод: 2251799813685246.2 // ожидается: 2251799813685246.25
ввод: 2251799813685246,5 вывод: 2251799813685246,5
/**
 Обратите внимание, что если вы попробуете это сделать сами и, скажем, зарегистрируете
 эти числа на консоль, они будут округлены. JavaScript
 округляется, если количество цифр превышает 17. Значение
 внутренне удерживается правильно:
*/ 
ввод: 2251799813685246.25.toString(2)
вывод: "11111111111111111111111111111111111111111111111110.