limits.h

Поделись знанием:
Перейти к: навигация, поиск
Стандартная библиотека
языка программирования С

limits.h — заголовочный файл стандартной библиотеки общего назначения языка программирования Си, который включает определения характеристик общих типов переменных. Значения зависят от специфики реализации, но могут быть не ниже диапазона, определенного для конечного значения в удобной реализации Си.





Константы-члены

Колонка «минимальное значение диапазона» содержит минимумы из возможного диапазона для константы данного типа, как это указано в стандарте. Иногда, значения _MIN представляют минимумы диапазона, представимые в виде редко используемого обратного кода и знакового диапазона. Большинство реализаций будут иметь больший диапазон по крайней мере для некоторых из этих чисел. например:

  • Реализации дополнительного кода имеют SCHAR_MIN равным −128 (аналогично для всех остальных значений _MIN).
  • 32-битные реализации устанавливают INT_MAX равным +2,147,483,647 (а также для INT_MIN и UINT_MAX)
  • Реализации с поддержкой Юникода устанавливают MB_LEN_MAX 4 или более.
  • Многие ЦСП имеют CHAR_BIT равным 16 или более[www.parashift.com/c++-faq-lite/intrinsic-types.html#faq-26.4][home.att.net/~jackklein/c/inttypes.html#char].
Имя Описание Типичное значение 32-битной
выполняемой/компилируемой
программы (с 1995 и сейчас)
Типичное значение 64-битной
выполняемой/компилируемой
программы (с 2008(?))
Стандартный минимум-
или максимум диапазона значений по ANSI
CHAR_BIT Число бит в байте 8 8 ≥ 8
SCHAR_MIN Минимальное значение для знакового char −128 −128 ≤ −127
SCHAR_MAX Максимальное значение для знакового char +127 +127 ≥ +127
UCHAR_MAX Максимальное значение для беззнакового char +255 +255 ≥ +255
CHAR_MIN Минимальное значение для char −128 −128 ≤ −127
(если char представлено как
знаковый char; иначе 0)
CHAR_MAX Максимальное значение для char +127 +127 ≥ +127
(если char представлено как
знаковый char; иначе +255)
MB_LEN_MAX Максимальная многобайтовая длина символа по всем локалям различается, обычно от 4 различается, обычно от 4 ≥ 1
SHRT_MIN Минимальное значение для short int −32,768 −32,768 ≤ −32,767
SHRT_MAX Максимальное значение для short int +32,767 +32,767 ≥ +32,767
USHRT_MAX Максимальное значение для беззнакового short int +65,535 +65,535 ≥ +65,535
INT_MIN Минимальное значение для int −2,147,483,648 −2,147,483,648 ≤ −32,767
INT_MAX Максимальное значение для int +2,147,483,647 +2,147,483,647 ≥ +32,767
UINT_MAX Максимальное значение для беззнакового int +4,294,967,295 +4,294,967,295 ≥ +65,535
LONG_MIN Минимальное значение для long int −2,147,483,648 −9,223,372,036,854,775,808 ≤ −2,147,483,647
LONG_MAX Максимальное значение для long int +2,147,483,647 +9,223,372,036,854,775,807 ≥ +2,147,483,647
ULONG_MAX Максимальное значение для беззнакового long int +4,294,967,295 +18,446,744,073,709,551,615 ≥ +4,294,967,295
LLONG_MIN Минимальное значение для long long int −9,223,372,036,854,775,808 −9,223,372,036,854,775,808 ≤ −9,223,372,036,854,775,807
LLONG_MAX Максимальное значение для long long int +9,223,372,036,854,775,807 +9,223,372,036,854,775,807 ≥ +9,223,372,036,854,775,807
ULLONG_MAX Максимальное значение для беззнакового long long int +18,446,744,073,709,551,615 +18,446,744,073,709,551,615 ≥ +18,446,744,073,709,551,615

Пример 1

#include <stdio.h>
#include <limits.h>
 
int main (void) 
{
  (CHAR_MAX==UCHAR_MAX) ? printf("This machine uses unsigned char by default\n") : 
	printf("This machine uses signed char by default\n");
  return 0;
}

Пример 2

#include <limits.h>
#include <locale.h>
#include <stdio.h>

int main()
{
	setlocale(LC_ALL, "RUS");
	printf("Максимальное значение типа int в этой системе составляет %d\n", INT_MAX);
}

См. также

Дополнительные источники

  • [www.cwi.nl/~steven/enquire.html Enquire]: Программа для автоматической генерации limits.h, также проверяющая корректность значений в уже существующем limits.h

Напишите отзыв о статье "Limits.h"

Ссылки

  • [www.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html limits.h] — основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group  (англ.)
  • [www.acm.uiuc.edu/webmonkeys/book/c_guide/2.5.html Руководство по Си--2.5 limits.h], доступно по состоянию на сентябрь 2006.

Отрывок, характеризующий Limits.h

И, вероятно, еще более возмутившись тем, что, сказав это, он сказал очевидную неправду и что Балашев в той же покорной своей судьбе позе молча стоял перед ним, он круто повернулся назад, подошел к самому лицу Балашева и, делая энергические и быстрые жесты своими белыми руками, закричал почти:
– Знайте, что ежели вы поколеблете Пруссию против меня, знайте, что я сотру ее с карты Европы, – сказал он с бледным, искаженным злобой лицом, энергическим жестом одной маленькой руки ударяя по другой. – Да, я заброшу вас за Двину, за Днепр и восстановлю против вас ту преграду, которую Европа была преступна и слепа, что позволила разрушить. Да, вот что с вами будет, вот что вы выиграли, удалившись от меня, – сказал он и молча прошел несколько раз по комнате, вздрагивая своими толстыми плечами. Он положил в жилетный карман табакерку, опять вынул ее, несколько раз приставлял ее к носу и остановился против Балашева. Он помолчал, поглядел насмешливо прямо в глаза Балашеву и сказал тихим голосом: – Et cependant quel beau regne aurait pu avoir votre maitre! [A между тем какое прекрасное царствование мог бы иметь ваш государь!]
Балашев, чувствуя необходимость возражать, сказал, что со стороны России дела не представляются в таком мрачном виде. Наполеон молчал, продолжая насмешливо глядеть на него и, очевидно, его не слушая. Балашев сказал, что в России ожидают от войны всего хорошего. Наполеон снисходительно кивнул головой, как бы говоря: «Знаю, так говорить ваша обязанность, но вы сами в это не верите, вы убеждены мною».
В конце речи Балашева Наполеон вынул опять табакерку, понюхал из нее и, как сигнал, стукнул два раза ногой по полу. Дверь отворилась; почтительно изгибающийся камергер подал императору шляпу и перчатки, другой подал носовои платок. Наполеон, ne глядя на них, обратился к Балашеву.
– Уверьте от моего имени императора Александра, – сказал оц, взяв шляпу, – что я ему предан по прежнему: я анаю его совершенно и весьма высоко ценю высокие его качества. Je ne vous retiens plus, general, vous recevrez ma lettre a l'Empereur. [Не удерживаю вас более, генерал, вы получите мое письмо к государю.] – И Наполеон пошел быстро к двери. Из приемной все бросилось вперед и вниз по лестнице.


После всего того, что сказал ему Наполеон, после этих взрывов гнева и после последних сухо сказанных слов:
«Je ne vous retiens plus, general, vous recevrez ma lettre», Балашев был уверен, что Наполеон уже не только не пожелает его видеть, но постарается не видать его – оскорбленного посла и, главное, свидетеля его непристойной горячности. Но, к удивлению своему, Балашев через Дюрока получил в этот день приглашение к столу императора.
На обеде были Бессьер, Коленкур и Бертье. Наполеон встретил Балашева с веселым и ласковым видом. Не только не было в нем выражения застенчивости или упрека себе за утреннюю вспышку, но он, напротив, старался ободрить Балашева. Видно было, что уже давно для Наполеона в его убеждении не существовало возможности ошибок и что в его понятии все то, что он делал, было хорошо не потому, что оно сходилось с представлением того, что хорошо и дурно, но потому, что он делал это.
Император был очень весел после своей верховой прогулки по Вильне, в которой толпы народа с восторгом встречали и провожали его. Во всех окнах улиц, по которым он проезжал, были выставлены ковры, знамена, вензеля его, и польские дамы, приветствуя его, махали ему платками.
За обедом, посадив подле себя Балашева, он обращался с ним не только ласково, но обращался так, как будто он и Балашева считал в числе своих придворных, в числе тех людей, которые сочувствовали его планам и должны были радоваться его успехам. Между прочим разговором он заговорил о Москве и стал спрашивать Балашева о русской столице, не только как спрашивает любознательный путешественник о новом месте, которое он намеревается посетить, но как бы с убеждением, что Балашев, как русский, должен быть польщен этой любознательностью.
– Сколько жителей в Москве, сколько домов? Правда ли, что Moscou называют Moscou la sainte? [святая?] Сколько церквей в Moscou? – спрашивал он.
И на ответ, что церквей более двухсот, он сказал:
– К чему такая бездна церквей?